본문 바로가기

Android

[4일차]ListView - AdapterView,MultipleAdapter

1. 어댑터뷰의 메카니즘을 설명해보시오



2. array Adapter 라는게 있다. 

실습

arrays.xml values에 만들어서. item을 나열한다. 
<string - array name="items">
<item></item>

ArrayAdapter <String> mAdapter;
에딧텍스트
리스트뷰 


리스트뷰 선언
키워드 뷰 선언
어댑터 객체 선언 

android.R.layout.아이디
리소스를 찾을때, 앞에 android를 붙이면 안드로이드 플랫폼에서 제공하는 것을 사용하겠다는 것이다. 

이렇게 해서 리스트뷰에 셋어댑터(어댑터)

어댑터에 데이터를 설정하는 private함수()선언


String[] items =겟리소스.겟스트링어레이(R.array.items)

어댑터.애드올


셋온아이템클릭리스너를통해서

listView.getItemAtPosition(position) 하면 아이템을 가져온다. 



--------------------------------------------

글자를 add해서 추가한다음에 에딧텍스트를 통해 아이템 추가하기 


일단 키워드 뷰에서 온클릭리스너로 텍스트를 가져온다. 

추가할때, 데이터를 추가하는 위치는 어댑터여야 한다. 


추가했을때, 스크롤되도록 하려면, ui적인 처리를 가지고 있는 리스트뷰에서 리스트뷰.smoothScrollToPosition 이라는 함수를 오출한다. 



실습2

멀티플 초이스 모드에서 

리스트 삭제 하기 

if (listView.getChoiceMode() == ListView.CHOICE_MODE_SINGLE) {// 쵸이스 모드와 싱글 모드를 구분
int position = listView.getCheckedItemPosition(); // 포지션,인덱스를 얻어온다. getCheckedItemposition
String text = (String) listView.getItemAtPosition(position);// 해당 인덱스에 text값을 가져온다.
mAdapter.remove(text); // 해당 텍스트를 제거한다.
} else if (listView.getChoiceMode() == ListView.CHOICE_MODE_MULTIPLE) {
SparseBooleanArray array = listView.getCheckedItemPositions(); // 선택된 true값의 인덱스를 배열로 가져온다.
List<String> removeList = new ArrayList<String>(); //인덱스가 밀리므로 값을 리스트로 가져온다.
for (int index = 0 ; index < array.size(); index++) {
int position = array.keyAt(index);
if (array.get(position)) {
String text = (String)listView.getItemAtPosition(position);
removeList.add(text);
}
}

for (String s : removeList) {
mAdapter.remove(s);
}
listView.clearChoices();
}