안드로이드 listview 질문있습니다
조회수 1898회
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = inf.inflate(R.layout.list_group, parent, false);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.lblListHeader);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
ImageView imageView = (ImageView) convertView.findViewById(R.id.indicator);
if(isExpanded){
imageView.setImageResource(R.drawable.arrowup);
} else {
imageView.setImageResource(R.drawable.arrowdown);
}
holder.text.setText(getGroup(groupPosition).toString());
return convertView;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
private class ViewHolder {
TextView text;
}
}
}
한 fragment 안에서 expandable 리스트뷰를 구현하였는데요. 리스트뷰가 펼쳐지면 arrowup 아이콘, 닫히면 arrowdown 을 넣고싶습니다.
ImageView imageView = (ImageView) convertView.findViewById(R.id.indicator);
if(isExpanded){
imageView.setImageResource(R.drawable.arrowup);
} else {
imageView.setImageResource(R.drawable.arrowdown);
}
이 부분에서 문제인 것 같은데 어떤 식으로 넣어야 될까요ㅜㅜ?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
그룹 뷰를 클릭하거나 Expand/Collapse 했을 때, 이미지가 변경되지 않는 이유는 getGroupView() 함수의 호출 시점 때문입니다. 이 함수는 그룹 뷰를 화면에 보여줄 때 호출되는 함수이기 때문에 getGroupView() 내에서의
isExpanded
값은 화면에 그려질 당시의 상태 값일 뿐입니다.정리하면 그룹 뷰를 클릭하거나 expandGroup()/collapseGroup() 함수를 실행했을 때 getGroupView()가 다시 호출되지 않으므로 이미지가 변경되지 않는 것입니다. 아래 리스너를 활용해서 이미지 변경 코드를 적용해보세요.
- setOnGroupCollapseListener
- setOnGroupExpandListener
- setOnGroupClickListener
-
(•́ ✖ •̀)
알 수 없는 사용자
- 말씀은 이해했습니다. 아래 리스너들을 어디부분에 어떻게 작성해야할까요? 알 수 없는 사용자 2016.5.27 17:00
- 오래된 포스트지만 여기에 관련 코드들이 있네요. http://m.blog.naver.com/lowmans/100125825786 알 수 없는 사용자 2016.5.27 18:10
댓글 입력