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

리스트뷰 아이템을 클릭하면 색이 변하는 기능을 질문하고 싶습니다.

+1 추천

리스트뷰의 아이템을 클릭하면 해당 아이템 부분이 연두색으로 변해서 

선택이 된 것을 확인할 수 있고, 또 다른 아이템을 클릭하면 그 부분이 연두색으로 변하고

원래 변했던 부분은 다시 색이 원래대로돌아가는 기능을 구현하고 싶습니다.

색이 변하는건 그냥 setBackgroundColor로 손쉽게 구현할 수 있었습니다만, 이전에 선택했던 부분을

다시 원래대로 돌리는 방법을 도저히 찾을 수 없어서 질문드립니다.

 

 mListView.setOnItemClickListener(new AdapterView.OnItemClickListener(){

           @Override
           public void onItemClick(AdapterView<?> adapterView,View view,int position,long id){

               switch(position){
                   case 0:
                     setFocus(adapterView,view);

                        break;
                   case 1:
                       setFocus(adapterView,view);

                       break;

               }


           }
       });

    }
    public void setFocus(AdapterView<?> adapterView, View v){

            v.setBackgroundColor(rgb(206,242,121));

    }


switch문을 쓴 것은 해당 position을 사용해서 다른 기능을 만들기 위해서입니다.
감사합니다.
ACA (220 포인트) 님이 2016년 12월 30일 질문

2개의 답변

0 추천
http://stackoverflow.com/questions/16189651/android-listview-selected-item-stay-highlighted

위의 링크에서 보시는 것처럼 onItemClick시  setSelected(ture)를 설정하고 layout xml 에서 pressed color와  default color를

따로 설정한 background를 사용해보는 것이 어떨까요?

 

listView.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,long arg3) {
        view.setSelected(true);
        ... //Anything
    }
});
	
To hold the color of listview item when you press it, include the following line in your listview layout:

android:background="@drawable/bg_key"
Then define bg_key.xml in drawable folder like this:

<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item 
        android:state_selected="true"
        android:drawable="@color/pressed_color"/>
    <item
        android:drawable="@color/default_color" />
</selector>
 
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="pressed_color">#4d90fe</color>
    <color name="default_color">#ffffff</color>
</resources>
근영 (1,690 포인트) 님이 2016년 12월 31일 답변
감사합니다!
셀렉터라는 좋은 방법을 배웠습니다.
추천도 눌러시면 감하겠습니다.
0 추천
android:listSelector="color값"

을 이용해보세요
qweqweq (4,220 포인트) 님이 2017년 1월 3일 답변
...