일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Array
- HP
- golang
- 연산자
- adapter
- 패널 교체
- 오버로딩
- 노트북 추천
- node.js
- Android
- ListView
- javascript
- 파이썬
- 리스트 뷰
- Java
- Overloading
- Python
- as?
- Kotlin
- js
- 함수
- 자바
- 자바스크립트
- 노트북
- 안드로이드
- 코틀린
- go
- var
- 배열
- 싱글 스레드
- Today
- Total
Bbaktaeho
[Android] Selection Widget Adapter에서 사용하는 대표적인 Item layout 알아보기 (simple_list_item_<1/2/checked/single_choice, multiple_choice>) 본문
[Android] Selection Widget Adapter에서 사용하는 대표적인 Item layout 알아보기 (simple_list_item_<1/2/checked/single_choice, multiple_choice>)
Bbaktaeho 2020. 9. 20. 17:47들어가며
[Android] ListView 사용하기 (안드로이드, 리스트뷰, Adapter)
들어가며 ListView를 사용해서 과일 리스트를 나타내 보겠습니다. 각각의 아이템인 과일을 클릭했을 때 이벤트 리스너를 통해서 어떤 아이템이 선택되었는지 TextView에 나타내 보겠습니다. ListView L
bbaktaeho-95.tistory.com
이전 포스팅에서 ListView를 활용한 앱을 만들었습니다.
기본 어댑터인 ArrayAdapter를 사용해서 각 Item의 layout으로 simple_list_item1 레이아웃을 사용했습니다.
또 다른 기본적인 레이아웃을 알아보고 구현해 보겠습니다.
전반적으로 "ListView 사용하기" 포스팅을 그대로 따라갑니다. 참고해주세요!
프로젝트 생성
[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
Andorid - ListView 초이스 모드 활용
리스트 아이템을 보여 줄 때 필요에 따라 선택 모드를 적용해야하는 경우가 있습니다. 커스텀한 리스트뷰를 제외 하고 기본 리스트뷰에서 CHOICE 모드 FLAG 에 따라서 쉽게 설정이 가능합니다. 커��
overface.tistory.com
'개발 (Develop) > 안드로이드 (Android)' 카테고리의 다른 글
[Android] Custom ListView 사용하기 (Kotlin, 리스트뷰, adapter) (0) | 2020.10.13 |
---|---|
[Android] RecyclerView (리사이클러뷰, 뷰홀더, ViewHolder) (1) | 2020.09.22 |
[Android] ListView 사용하기 (안드로이드, 리스트뷰, Adapter) (0) | 2020.09.20 |
[Android] AlertDialog 사용하기 (안드로이드, 경고창, 팝업창) (0) | 2020.09.20 |
[Android] 계산기 앱 만들기 (안드로이드, 계산기 애플리케이션, 후위 표기법, Calculator, infix, postfix) (5) | 2020.09.14 |