1. 리스트뷰란 무엇인가?
리스트뷰(ListView)는 안드로이드의 기본 목록형 뷰 위젯으로, 데이터를 순차적으로 화면에 나열하는 역할을 합니다.
RecyclerView가 등장하기 전까지는 리스트뷰가 표준이었으며, 지금도 간단한 데이터 표현에 매우 유용합니다.
리스트뷰의 핵심 구성요소는 다음 세 가지입니다.
- ListView 위젯: 실제 UI에 표시되는 리스트 영역
- Adapter (어댑터): 데이터와 뷰를 연결하는 중간 다리 역할
- Data Source (데이터 원본): 문자열 배열, 데이터 클래스 리스트 등
2. 프로젝트 구조 준비하기
리스트뷰를 구현하려면 Activity 레이아웃과 Kotlin 코드 파일이 필요합니다.
기본적으로 다음 두 파일을 구성합니다:
activity_main.xmlMainActivity.kt
이 두 파일이 앱의 UI와 로직을 담당하게 됩니다.
3. 레이아웃 구성: XML로 리스트뷰 정의하기
먼저, 레이아웃 XML 파일(activity_main.xml)에 리스트뷰를 추가합니다.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:dividerHeight="1dp"
android:padding="8dp" />
</RelativeLayout>
이 코드는 화면 전체를 차지하는 리스트뷰를 정의합니다.dividerHeight 속성은 각 항목 사이의 구분선을 설정하는 데 사용됩니다.
4. Kotlin 코드로 어댑터 연결하기
이제 MainActivity.kt에서 리스트뷰에 데이터를 연결합니다.
import android.os.Bundle
import android.widget.ArrayAdapter
import android.widget.ListView
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 1. 리스트뷰 인스턴스 가져오기
val listView: ListView = findViewById(R.id.listView)
// 2. 데이터 소스 정의
val items = arrayOf("아이템 1", "아이템 2", "아이템 3", "아이템 4", "아이템 5")
// 3. ArrayAdapter 생성
val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, items)
// 4. 어댑터를 리스트뷰에 연결
listView.adapter = adapter
}
}
이 코드의 핵심은 ArrayAdapter입니다.ArrayAdapter는 단순한 문자열 배열을 화면의 텍스트 리스트로 변환하는 기본 어댑터로,
초보 개발자에게 가장 쉽게 리스트뷰 구조를 이해하게 해줍니다.
5. 클릭 이벤트 추가하기
리스트 항목을 클릭했을 때 동작을 추가할 수도 있습니다.
다음 코드를 onCreate() 안에 추가해보세요.
listView.setOnItemClickListener { _, _, position, _ ->
val selectedItem = items[position]
Toast.makeText(this, "선택한 항목: $selectedItem", Toast.LENGTH_SHORT).show()
}
이 한 줄로 사용자는 리스트 항목을 클릭할 때마다 해당 항목의 이름을 Toast 메시지로 확인할 수 있습니다.
6. 실무에서 자주 사용하는 확장 방법
리스트뷰는 단순한 텍스트 리스트로 시작하지만, 커스텀 어댑터를 사용하면 이미지, 버튼, 다양한 레이아웃 구성이 가능합니다.
예를 들어, 사용자 프로필 목록, 채팅 메시지 리스트 등을 구현할 때는 다음과 같은 확장이 필요합니다.
BaseAdapter또는ArrayAdapter상속받아 커스텀 레이아웃 적용ViewHolder패턴으로 성능 최적화RecyclerView로 마이그레이션 (대규모 리스트 데이터 처리에 적합)
답글 남기기