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

커스텀 listview가 보여질 때, 첫번째 목록이 선택되어진 상태로 보여지게 할 수 있나요?

0 추천
현재 커스텀 listview를 구현한 상태이고, listview 속성에

android:listSelector 를 이용하여 목록 클릭시 그 목록의 테두리가 변경되게 하였습니다.

하지만 listview가 처음 화면에 보여질때 목록을 클릭하기 전에 첫번째 목록이 선택된 상태, 즉 첫번째 목록의 테두리가 변경된 상태로 보여지려면 어떻게 해야 하나요??

 

listview이 보여지는 화면으로 전환시

mylistview.setSelection(0);

mylistview.setItemChecked(0, true);  모두 시도해봤지만 변경되지 않았습니다. 답변 부탁드립니다.

 

추가적으로 클릭을 하지 않고, 코드 상으로 listview의 특정 목록이 선택된 상태로 지정되고 테두리 변경이 되는 방법이 있는지도 궁금합니다.

(ex. 목록이 선택된채로 음악이 재생되고, 음악재생이 끝나면 다음 목록을 자동으로 선택된 상태로 만든다.)
lns0mnia (380 포인트) 님이 2021년 1월 30일 질문

1개의 답변

0 추천
아래 답변이 있네요.

https://stackoverflow.com/questions/10788688/programmatically-select-item-listview-in-android

제 생각에 Axel이 한 답변이 선택되진 않았지만, 가장 좋은 것 같네요.

답변에 자기도 실수했다고 강조된 부분이 있습니다. listview adapter 세팅한 후에 하라는 거죠.

mListView.setItemChecked(1,true); //Don't make the same mistake I did by calling this function before setting the listview adapter.
Will Kim (43,170 포인트) 님이 2021년 1월 30일 답변
답변 감사합니다ㅜㅜ 첨부해 주신 링크를 참고하여 adapter도 세팅을 한 후에 답변대로 해보았습니다. 하지만 listview의 목록이 선택이 되면 제가 listview에 설정한 android:listSelector ="@drawble/round_list"으로 테두리가 바뀌어야 하는데 아무 변화가 일어나지 않아서 선택이 된건지 아닌지도 모르겠네요 ㅜㅜ setItemChecked함수 의외에는 Axel의 답변은 listview의 배경을 바꾸는 코드인것 같고...
listview 목록을 클릭했을 때는 설정한대로 테두리가 잘 변하는데, 코드상으로 선택을 하면 왜 안되는 걸까요 ㅜㅜㅜ
음.. 유저가 클릭할 때 잘 된다면, 뭔가 호출 함수나 환경 적인 요소인 것 같네요..
어떤 답변은 ListView에서 Adapter를 쓴다면 Adapter의 루트 레이아웃에 하라는 이야기도 있지만,
저는 왠지 아래로 하면 될 것 같네요,

https://stackoverflow.com/questions/29742007/android-setitemchecked-with-listselector-not-working
...