마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ViewHolder 질문입니다!

0 추천

ListView안에 getView 코드입니다.

해당 조건을 만족할 때 textView를 보여지게 하고, 그렇지 않은 경우에는 보이지 않게 하려고 하는데요.

view holder를 이용하니까 visible 세팅을 그대로 놔두면 그 다음 리스트 출력시에 view를 재사용 하면 조건이 맞지 않아도 그대로 나오더라고요.

그래서 else를 이용해서 invisible을 하게 되면 전체 리스트 중에서 마지막 하나만 text view가 보이네요.

어떻게 해야하나요..ㅠㅠ view holder를 쓰지 않고 계속 할당 받는 방법밖에 없는건가요ㅠㅠ

 

참고로 text view 에서 xml 파일 기본 값은 invisible입니다!

            if(flag.equals("1") && (id .equals(data.getStationId()))) {
                wrapper.getBusLocation().setVisibility(View.VISIBLE);
                wrapper.getBusLocation().setText(location.get(i).getPlainNumber());
                Log.v("bus---------->", id);
                Log.v("bus2----------->", data.getStationId());
                Log.v("flag::::::::", flag);
                continue;
            } else if(flag.equals("0") && (id.equals(next.getStationId()))) {
                wrapper.getBusLocation().setVisibility(View.VISIBLE);
                wrapper.getBusLocation().setText(location.get(i).getPlainNumber());
                Log.v("bus---------->", id);
                Log.v("bus2----------->", next.getStationId());
                Log.v("flag::::::::", flag);
                continue;
            } else {
                wrapper.getBusLocation().setVisibility(View.INVISIBLE);
            }

 

마일이 (240 포인트) 님이 2015년 11월 25일 질문
1. if문 안의 flag, id, data, next등이 array로 관리되고 getview의 position으로 값을 받아오고 있는지...
2. if문의 내용이 해당 리스트 아이템이 아닌 전체 리스트 아이템을 반복문으로 돌리고 있는건 아닌지.

확인해 보시는것도..
position으로 getItem 이용해서 받아오는건데 그러면 안되는 건가요?ㅠㅠ

1개의 답변

0 추천
 
채택된 답변
조건에 맞게 visible/invisible하는게..체크박스 체크하는거랑 유사한 기능같은데요..

함 체크박스 로직 참고해서 적용해보세요..

저같은경우에도 체크박스로 체크한 애들/안한애들 구별해서 체크하는거 viewholder로 했거든요.

아마 조건에 맞는애인지 아닌애인지 저장할 배열이 따로 있어야 할겁니다..

스크롤을 오르고 내릴 때마다 getview내에서 갱신되는데 그 때마다 배열안의 있는 놈들을 참고해서

보여줄건지/안보여줄건지 해야할거같네요.
망고사탕 (5,000 포인트) 님이 2015년 11월 26일 답변
마일이님이 2015년 11월 26일 채택됨
결국 배열같이 하나 더 만들어서 사용하니까 제대로 되네요!ㅠㅠ 감사합니다!!
...