반응형
Recent Posts
Recent Comments
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Bbaktaeho

[Android] Selection Widget Adapter에서 사용하는 대표적인 Item layout 알아보기 (simple_list_item_<1/2/checked/single_choice, multiple_choice>) 본문

개발 (Develop)/안드로이드 (Android)

[Android] Selection Widget Adapter에서 사용하는 대표적인 Item layout 알아보기 (simple_list_item_<1/2/checked/single_choice, multiple_choice>)

Bbaktaeho 2020. 9. 20. 17:47
반응형

들어가며


bbaktaeho-95.tistory.com/66

 

[Android] ListView 사용하기 (안드로이드, 리스트뷰, Adapter)

들어가며 ListView를 사용해서 과일 리스트를 나타내 보겠습니다. 각각의 아이템인 과일을 클릭했을 때 이벤트 리스너를 통해서 어떤 아이템이 선택되었는지 TextView에 나타내 보겠습니다. ListView L

bbaktaeho-95.tistory.com

이전 포스팅에서 ListView를 활용한 앱을 만들었습니다.

기본 어댑터인 ArrayAdapter를 사용해서 각 Item의 layout으로 simple_list_item1 레이아웃을 사용했습니다.

또 다른 기본적인 레이아웃을 알아보고 구현해 보겠습니다.

 

전반적으로 "ListView 사용하기" 포스팅을 그대로 따라갑니다. 참고해주세요!

프로젝트 생성


bbaktaeho-95.tistory.com/53

 

[Android] Click 이벤트로 Toast 생성하기 (setOnclickListener, makeToast)

개발하기 전에 안드로이드 애플리케이션을 개발하려면 IntelliJ IDEA, Android Studio와 같은 통합 개발환경이 필요합니다. 저는 Android 4.0.1 버전으로 진행하겠습니다. 기획한 내용은 버튼과 이미지뷰를

bbaktaeho-95.tistory.com

simple_list_item_1


simple_list_item1 레이아웃은 텍스트뷰 1개만 가지고 있는 레이아웃입니다.

텍스트 하나

simple_list_item_2


simple_list_item_2 레이아웃은 텍스트뷰 2개를 가지고 있는 레이아웃입니다.

List<HashMap<String, String>> list = new ArrayList<>();
HashMap<String, String> item1 = new HashMap<>();
HashMap<String, String> item2 = new HashMap<>();

item1.put("num", "1");
item1.put("desc", "첫 번째");

item2.put("num", "2");
item2.put("desc", "두 번째");

list.add(item1);
list.add(item2);

키와 값으로 구분할 수 있도록 HashMap 자료구조를 사용했습니다.

 

SimpleAdapter adapter = new SimpleAdapter(this, list, android.R.layout.simple_list_item_2, new String[]{"num", "desc"}, new int[] {android.R.id.text1, android.R.id.text2});
listView.setAdapter(adapter);

ArrayAdapter 클래스보다 생성하기 까다롭습니다.

생성된 SimpleAdapter를 listView에 설정합니다.

 

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
                HashMap<String, String> data = (HashMap<String, String>) adapterView.getItemAtPosition(position);
                tvSelect.setText(data.get("desc"));
            }
});

아이템을 클릭하면 TextView에 나타냅니다.

 

두 번째 아이템 클릭

simple_list_item_checked


simple_list_item_checked는 CheckedTextView를 가지고 있는 레이아웃입니다.

List<String> list = new ArrayList<>();

list.add("사과");
list.add("배");
list.add("딸기");
list.add("바나나");

과일 리스트를 만들어줍니다.

 

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_checked, list);
listView.setAdapter(adapter);

ArrayAdapter를 생성하고 listView에 설정해줍니다.

 

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
                CheckedTextView check = (CheckedTextView)view;
                check.setChecked(!check.isChecked());
            }
});

아이템을 클릭했을 때 체크를 해줍니다.

CheckedTextView의 setChecked 메서드를 통해서 토글로 구현했습니다.

 

simple_list_item_single_choice


List<String> list = new ArrayList<>();

list.add("사과");
list.add("배");
list.add("딸기");
list.add("바나나");

 데이터는 동일하게 하겠습니다.

 

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, list);
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
listView.setAdapter(adapter);

setChoiceMode 메서드를 통해서 리스트뷰에서 하나만 선택할 수 있도록 설정합니다.

 

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
                Object clickItemObj = adapterView.getAdapter().getItem(position);
                tvSelect.setText(clickItemObj.toString());
            }
});

클릭된 아이템을 찾아서 TextView에 나타냈습니다.

 

simple_list_item_multiple_choice


List<String> list = new ArrayList<>();

list.add("사과");
list.add("배");
list.add("딸기");
list.add("바나나");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, simple_list_item_multiple_choice, list);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
listView.setAdapter(adapter);

setChoiceMode 메서드를 통해서 여러 개 선택이 가능하도록 설정합니다.

 

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
                int len = listView.getCount();
                StringBuilder selects = new StringBuilder();
                SparseBooleanArray checked = listView.getCheckedItemPositions();
                for (int i = 0; i < len; i++)
                    if (checked.get(i)) selects.append(" ").append(list.get(i));

                tvSelect.setText(selects);
            }
});

체크된 아이템들만 찾아서 TextView에 나타냈습니다.

 

참고 자료


www.dev2qa.com/android-listview-example/

 

Android ListView Example

android.widget.ListView is widely used in android mobile app. It displays all the list items in the form of a vertical list. This article will show you examples about how to create […]

www.dev2qa.com

developer.android.com/reference/android/R.layout

 

R.layout  |  Android 개발자  |  Android Developers

 

developer.android.com

overface.tistory.com/109

 

Andorid - ListView 초이스 모드 활용

리스트 아이템을 보여 줄 때 필요에 따라 선택 모드를 적용해야하는 경우가 있습니다. 커스텀한 리스트뷰를 제외 하고 기본 리스트뷰에서 CHOICE 모드 FLAG 에 따라서 쉽게 설정이 가능합니다. 커��

overface.tistory.com

 

반응형