ListView 예제를 살펴보기 전에 ListView가 무엇인지 간단히 알아보겠습니다. ListView는 ArrayList, List 또는 데이터베이스 등 다양한 소스에서 가져온 데이터 항목들을 모아서 보여주는 위젯입니다. 주로 항목들을 세로 방향 목록 형태로 표시하며, 사용자는 화면을 위아래로 스크롤하고 원하는 항목을 클릭(터치)할 수 있습니다.
이번 글에서는 안드로이드 스튜디오에서 ListView를 직접 만들고, 클릭 이벤트까지 처리하는 방법을 단계별로 알아보겠습니다.
1단계: 새 프로젝트 생성하기
Android Studio를 실행한 뒤 File → New Project 메뉴로 이동하여 새 프로젝트를 생성합니다. 프로젝트 생성에 필요한 모든 정보를 입력해 주세요.
2단계: 레이아웃 파일 작성하기
res/layout/activity_main.xml 파일에 아래 코드를 추가합니다.
<?xml version = "1.0" encoding = "utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android = "https://schemas.android.com/apk/res/android" xmlns:tools = "https://schemas.android.com/tools" android:layout_width = "match_parent" android:layout_height = "match_parent"> <LinearLayout android:layout_width = "match_parent" android:layout_height = "match_parent" android:orientation = "vertical"> <ListView android:id = "@+id/list" android:layout_width = "wrap_content" android:layout_height = "wrap_content"/> </LinearLayout> </android.support.constraint.ConstraintLayout>
위 레이아웃 코드에서는 LinearLayout 내부에 하나의 ListView를 선언했습니다. id 값은 @+id/list로 지정되어 있어 자바 코드에서 참조할 수 있습니다.
3단계: MainActivity 작성하기
src/MainActivity.java 파일에 아래 코드를 추가합니다.
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.MotionEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ListView list = findViewById(R.id.list);
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("JAVA");
arrayList.add("ANDROID");
arrayList.add("C Language");
arrayList.add("CPP Language");
arrayList.add("Go Language");
arrayList.add("AVN SYSTEMS");
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrayList);
list.setAdapter(arrayAdapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String clickedItem=(String) list.getItemAtPosition(position);
Toast.makeText(MainActivity.this,clickedItem,Toast.LENGTH_LONG).show();
}
});
}
}코드 설명
MainActivity에서는 먼저 ArrayList에 표시할 항목들을 저장합니다. 그다음 ArrayAdapter를 생성해 리스트뷰에 연결하는데, 핵심 코드는 아래와 같습니다.
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrayList); list.setAdapter(arrayAdapter);
android.R.layout.simple_list_item_1은 안드로이드에서 기본 제공하는 리스트 항목 레이아웃으로, 한 줄짜리 텍스트 항목을 간편하게 표시할 수 있습니다.
또한 사용자가 목록의 항목을 클릭했을 때 해당 항목의 이름을 보여주기 위해 OnItemClickListener를 설정했습니다.
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String clickedItem = (String) list.getItemAtPosition(position);
Toast.makeText(MainActivity.this,clickedItem,Toast.LENGTH_LONG).show();
}
});항목을 클릭하면 getItemAtPosition()으로 클릭된 항목의 값을 가져오고, Toast를 통해 화면 하단에 잠깐 표시해 줍니다.
4단계: 애플리케이션 실행하기
매니페스트 파일은 별도로 수정할 필요가 없습니다. 실제 Android 기기를 컴퓨터에 연결한 상태라고 가정하고 진행하겠습니다. Android Studio에서 앱을 실행하려면 프로젝트의 액티비티 파일 중 하나를 연 뒤, 상단 툴바에서 Run(실행) 아이콘을 클릭하세요. 실행 옵션에서 자신의 모바일 기기를 선택하면 기기에 앱이 설치되어 기본 화면이 나타납니다.

앱이 실행되면 목록에 저장된 프로그래밍 언어들이 세로로 나열됩니다. 이제 아무 항목이나 클릭해 보면, 아래와 같이 클릭한 항목의 이름이 토스트 메시지로 출력됩니다.
