본문 바로가기
프로젝트/Android

ListView의 Choice Mode

by 1005ptr 2018. 9. 24.
반응형

ListView에는 SingleSelect 모드, MultiSelect 모드가 있다.


모드 설정

 - listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

 - listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);



SingleSelect 모드에서는 GetSelectedItem을 쓰고

MultiSelect 모드에서는 GetCheckedItemPositions()를 쓴다.


SingleSelectMode

 - 할말이 없다.


MultiSelectMode

 - GetCheckedItemPositions()의 반환형은 SparseBooleanArray()이고 디버그로 찍어서 보면 전체 아이템에 대해 선택됐는지 안됐는지 boolean값이 들어있다.

그런데 이 SparseBooleanArray에 size() 함수를 호출하면 값이 true인 아이템의 개수(선택된 아이템의 개수)가 나온다. 왜냐하면 이런식으로 쓰라고 만들어놨기 때문

출처 : https://stackoverflow.com/a/12406431/10340370


SparseBooleanArray arr = listView.getCheckedItemPositions();


for(int i = 0 ; i < arr.size() ; i++)

{

int pos = arr.keyAt(i);

Item item = listView.getItemAtPosition(pos);

}


다시 말하자면

리스트뷰의 모드에 따라 호출해야 하는 함수가 다르다는 것.

싱글모드인데 GetCheckedItemPositions()를 호출하면 null이 반환됐던 것 같다.

모르는 사람은 잘못된 길로 샐수있다는 건 큰문제..

반응형

'프로젝트 > Android' 카테고리의 다른 글

ListView에 클릭리스너 달기  (0) 2018.09.24
Thread와 static 변수  (0) 2018.09.18
자원재활용 contentView  (0) 2018.09.08
Android에서 SpreadGrid UI 만들기  (0) 2018.09.08

댓글