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

x버튼 클릭후 리스트 배경 바꾸기(소스첨부)

0 추천
else
            holder=(ViewHolder)vi.getTag();
       
        final int pos = position;
        final boolean isClickable = !imageAndText.isExistedMenu;
        final boolean isEditable = imageAndText.isEditable;

        int iDrawable = 0;
       
        if(isClickable){
         holder.ll_bg.setBackgroundColor(Color.RED);
        }else{ // 겔텝 drawable 적용
   
          if(position%2 == 1){
     iDrawable = R.drawable.search_textbox_02;
    } else {
     
           iDrawable = R.drawable.search_textbox_02;
          }
         }
         holder.ll_bg.setBackgroundResource(iDrawable);

 

안녕하세요 textbox_02;는 빨간색의 배경입니다

일단 if조건에는 홀수줄일때 라고햇는데요

저기서 수정을하고싶습니다

 

x버튼을 누른후 리스트뷰들이 계속 빨간배경이 나오게끔이요..

소스 수정해주심 감사할게요
익명사용자 님이 2013년 12월 24일 질문
블린형을 쓰려고해도 잘안되네요..
버튼의 아이디는 btnx 라고 하겟습니다

1개의 답변

0 추천

if(isClickable) 윗 줄에 

holder.ll_bg.setBackgroundColor(Color.BLUE);

를 먼저 넣어서 기본 색을 지정하는 걸로 해보세요 

------------------------------------------ 수정 ----------------------

일단 리스트뷰에 뿌리는 건 어댑터에서 할 일이고, 버튼의 클릭을 받는 건 액티비티에서 하는 일일 것 같아요.

그럼 액티비티에서 어댑터로 '버튼이 눌렸다'라는 값을 넘겨줘야 하겠죠.

어댑터에 전역으로 isClicked라는 boolean 변수와 public 으로 onBtnClick 이라는 함수를 만들고, onBtnClick에서는 isClicked라는 변수를 true로 만듭니다. 그리고 새로고침을 위해 notifyDataSetChanged() 를 호출하구요.

어댑터의 getView에서는 저 isClicked 변수가 true이면 배경색을  red로, 아니면 기본 배경색으로 바꾸는 작업을 하면 됩니다.

쎄미 (162,410 포인트) 님이 2013년 12월 24일 답변
쎄미님이 2013년 12월 24일 수정
if(position%2 == 1){
이 부분에 x버튼을 클릭하며 빨간배경리스트뷰가 나오게하라
이렇게하면될거같은데 안되서요..
말씀하신대로했더니 그냥 블루만나오네요..
질문을 제가 잘못 이해했나보네요.
x 버튼을 누르면 리스트 전체가 빨갛게 돼야하는건가요?
x버튼을 누르면 리스트뷰 한줄한줄이 빨갛게되게요~
원래는 무배경이고요!
x 버튼은 리스트뷰 한줄한줄마다 들어가 있나요?
그리고 눌렸다, 안눌렸다를 저장하는 변수도 있는건가요?
아니요 한줄한줄 들어가잇는건 아니고요...
저장 변수도없고요..
ㅠㅠ..리스트한줄한줄 drawable로 하려하거든요.....
그럼 정리를 하자면,
- 버튼이 하나가 있고
- 버튼을 누르면 리스트뷰의 각 라인의 배경이 빨갛게 변해야한다
이거죠?
이렇게되면 저 위에 있는 소스는 전혀 상관없는 소스가 되는거구요.
맞나요?
네네 근데 저위에 소스로 빨갛게가되고 기본이되는데 상관있지않나요?ㅠ
저 빨갛게 만드는 부분에 있는  isClickable가 클릭이 됐다는 뜻인가요?
네네..맞아요 원래의 소스는요
        
        final int pos = position;
        final boolean isClickable = !imageAndText.isExistedMenu;
        final boolean isEditable = imageAndText.isEditable;
        
        if(isClickable){
            holder.ll_bg.setBackgroundColor(Color.RED);
        }else{
        
            if(position%2 == 1){
                holder.ll_bg.setBackgroundResource(R.drawable.search_textbox_03);
            }else{
                holder.ll_bg.setBackgroundResource(R.drawable.search_textbox_02);
            }

이거입니다
리스트뷰가 홀수일때 2번 drawable 짝수면 3번drawable
이렇게 배경이 나오게하는거데요
이거를 수정하려했습니다..
그럼
if(isClickable)
    holder.ll_bg.setBackgroundColor(Color.RED);
else
    holder.ll_bg.setBackgroundColor(Color.BLUE);
이렇게만 하면 되는거 아닌가요?
흑흑 제가 설명을 너무 못했나보네요..
너무 감사합니다 ㅠㅠ
버튼클릭시 레드만나오게하고시어ㅛ
저런 drawable 필요없이...
버튼클릭시 리스트를클릭하면 빨갛게만 나와라
이렇게 하고싶은거에용ㅠ_ㅠ
다음 번 질문을 하실 때에는 소스를 이쁘게 보이게 하는 방법을 꼭 적용하시구요, 답변을 달 사람 입장에서 가장 이해하기 쉽고, 답변달기 쉽게 질문을 올려주시면 빠르고 쉽게 해결할 수 있을겁니다 ^^
...