Android의 ListView는 스크롤이 가능한 목록을 표시하기 위해 사용하는 UI 요소이다.
하지만, 일반적으로 RecyclerView를 사용한다.
ListView를 포함한 xml 코드
<?xml version="1.0" encoding="utf-8"?>
<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=".MainActivity" >
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
MainActivity 코드
class MainActivity : AppCompatActivity() {
lateinit var activityMainBinding: ActivityMainBinding
// ListView를 구성하기 위해 필요한 데이터
val data1 = arrayOf(
"문자열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"
)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
activityMainBinding = ActivityMainBinding.inflate(layoutInflater)
setContentView(activityMainBinding.root)
// Adapter 생성
// ArrayAdapter : 칸 하나에 문자열 하나만 사용하는 경우
// android.R.layout.simple_list_item1 : 안드로이드에서
// 리스트뷰의 항목 하나를 구성할 때 사용하라고 제공하는 layout
// TextView 하나만 있다.
// Context : 어떠한 작업을 위한 정보를 관리하는 요소들을 통칭한다.
// 안드로이드는 시스템이나 애플리케이션과 관련된 정보를 가지고 있다.
// Context, 항목하나를 구성하기 위해 사용할 레이아웃, 텍스트뷰에 채워줄 문자열 배열
// 지정된 레이아웃 안에 있는 android.R.id.text1 이라는 View에 문자열을 셋팅해준다
val adapter = ArrayAdapter<String>(
this, android.R.layout.simple_list_item_1, data1
)
activityMainBinding.run{
listView.run{
// ListView에 어뎁터를 설정한다.
setAdapter(adapter)
// ListView의 항목 하나를 선택하면 동작하는 리스너
// position : 사용자가 터치한 항목의 순서값(0부터 1씩 증가)
setOnItemClickListener { parent, view, position, id ->
textView.text = "${data1[position]}를 눌렀습니다"
}
}
}
}
}
실행화면