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

listview 안의 각각의 아이템의 visible 변경관련 문의드립니다.

0 추천

안녕하세요 우선 질문 사항 그림으로 그려봤습니다.

위와 같이 listview에서 button을 클릭할 경우 기존에 gone으로 보여지지 않고 있다가 visible이 되면서

해당 아이템의 추가적인 사항이 나오게 하고 싶습니다.

위와 같은 작업 expandable listview를 이용하여 가능을 할 듯 한데... 되도록이면 listview를 이용하여 제어를 하려 합니다.

adapter에서 특정 position에 대하여 보이고 안보이는 방법을 사용해 보려 하는데 혹시 setid나 settag등을 이용하여

해당 값을 변경하면 될까도 생각해봤는데 쉽지가 않네요...

위와 관련하여 도움을 요청드립니다. 아니면 혹시 참고할 만한 자료라도 있는지....부탁드립니다.

 

wind (2,240 포인트) 님이 2013년 4월 2일 질문

1개의 답변

0 추천
어렵게 생각하신 것 같은데요 비교적 쉬운 문제로 보입니다.

먼저 모든 아이템은 row 즉, 각 항목의 리소스를 공유할 테니까

동적으로 안보였다가 보이게 하는 속성은 디폴트로 gone으로 놓으시고

버튼 이벤트 내부에서 리스트라면 어차피 콜렉션배열을 쓰실거니까

그 배열의 객체에 변수를 on/off 해서 처리하시면 될 듯합니다.

다음은 제가 사용중인 코드인데 참고하세요

        ivFold.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                object.setFold(object.isFold()? false : true);                
                if(object.isFold()) {
                    ivFold.setImageResource( R.drawable.drop_btn_on );
                    layoutMemo.setVisibility(View.VISIBLE);
                }
                else{
                    ivFold.setImageResource( R.drawable.drop_btn_off );
                    layoutMemo.setVisibility(View.GONE);
                }                                
            }
        });
serimo2 (180 포인트) 님이 2013년 4월 3일 답변
우선 좋은 답변 감사합니다.
말씀하신 방법으로 어서 해봐야겠네요..^^
아 이거 말씀하신 내용으로 쉽게 생각했는데 고민이 되네요...
서버에서 데이터를 받아서 파싱한다음 아답터로 던져주고 있습니다.
아답터에서는 개별 layout을 가지고 있는데 그럼 아답터에서 클릭리스너를 구현해서 개별적으로 제어를 해주어야 하는건가요??
아답터 내부에서 몇번째꺼가 클릭되었는지 값을 가지고 있어야 하는건가요?
...