관리 메뉴

Bbaktaeho

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

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

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

Bbaktaeho 2020. 9. 20. 15:35
반응형

들어가며


ListView를 사용해서 과일 리스트를 나타내 보겠습니다.

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

ListView


ListView는 일반적으로 리스트 형태로 된 화면 컨트롤을 말합니다.

여러 개의 아이템 중에 하나를 선택할 수 있는 위젯들을 Selection Widget이라고 부릅니다.

 

Adapter를 통해서 선택할 수 있는 여러 개의 아이템을 관리합니다.

즉, 원본 데이터는 Adapter에 설정하며 Adapter가 데이터 관리 기능을 담당합니다.

프로젝트 생성


bbaktaeho-95.tistory.com/53

 

[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에 그려줍니다.

실행


반응형