[Android] ListView 사용하기 (안드로이드, 리스트뷰, Adapter)
들어가며
ListView를 사용해서 과일 리스트를 나타내 보겠습니다.
각각의 아이템인 과일을 클릭했을 때 이벤트 리스너를 통해서 어떤 아이템이 선택되었는지 TextView에 나타내 보겠습니다.
ListView
ListView는 일반적으로 리스트 형태로 된 화면 컨트롤을 말합니다.
여러 개의 아이템 중에 하나를 선택할 수 있는 위젯들을 Selection Widget이라고 부릅니다.
Adapter를 통해서 선택할 수 있는 여러 개의 아이템을 관리합니다.
즉, 원본 데이터는 Adapter에 설정하며 Adapter가 데이터 관리 기능을 담당합니다.
프로젝트 생성
[Android] Click 이벤트로 Toast 생성하기 (setOnclickListener, makeToast)
개발하기 전에 안드로이드 애플리케이션을 개발하려면 IntelliJ IDEA, Android Studio와 같은 통합 개발환경이 필요합니다. 저는 Android 4.0.1 버전으로 진행하겠습니다. 기획한 내용은 버튼과 이미지뷰를
bbaktaeho-95.tistory.com
res/activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ListViewActivity">
<TextView
android:id="@+id/tv_select"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="항목 선택 결과는?" />
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
LinearLayout에 선택된 아이템을 나타내는 TextView와 리스트를 보여주는 ListView를 만들었습니다.
MainActivity.java
List<String> list = new ArrayList<>();
list.add("사과");
list.add("배");
list.add("딸기");
list.add("감자");
ArrayList 자료구조를 사용해서 리스트를 구현합니다.
ArrayAdapter<String> adpater = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
listView.setAdapter(adpater);
ArrayAdapter로 어뎁터를 생성합니다.
ArrayAdapter는 리스트뷰에 보여줄 수 있는 가장 간단한 방법입니다.
생성자의 인자값으로 Context, LayoutRes, List를 받습니다.
listView의 setAdapter 메서드를 통해서 어뎁터를 설정해줍니다.
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
String data = (String) adapterView.getItemAtPosition(position);
tvSelect.setText(data);
}
});
리스트뷰의 아이템을 클릭했을 때 이벤트 처리를 수행하는 코드입니다.
onItemClick 메서드로 전달되는 파라미터를 보면 몇 번째 아이템이 클릭된 것인지를 position 변수 값으로 확인할 수 있습니다.
getItemAtPosition 메서드를 통해서 아이템의 데이터를 가져오고 그 데이터를 textView에 그려줍니다.