안드로이드 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
    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)