res/activity_main.xml
: ListView라는 layout를 만들어줌
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
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"
tools:context=".MainActivity">
<ListView
android:id="@+id/mainListview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val listView = findViewById<ListView>(R.id.mainListview)
val list_item2 = mutableListOf<ListViewModel>() // ListViewModel의 데이터 형태를 가져옴
list_item2.add(ListViewModel("a","b"))
list_item2.add(ListViewModel("c","d"))
list_item2.add(ListViewModel("e","f"))
val listviewAdapter = ListViewAdapter(list_item2)
listView.adapter = listviewAdapter
listView.setOnItemClickListener { parent, view, position, id ->
Toast.makeText(this, list_item[p0],Toast.LENGTH_LONG).show()
}
}
}
데이터를 배열에 저장: list_item2 = mutableListOf<ListViewModel>()
, 여기에 .add() 이용
어댑터 생성: val listviewAdapter = ListViewAdapter(list_item2)
, item2로 생성됨
어댑터를 리스트뷰에 연결: listView.adapter = (생성한어댑터)listviewAdapter
클릭 이벤트 처리: listView.setOnItemClickListener { parent, view, position, id -> Toast.makeText(this,list_item[p0],Toast.LENGTH_LONG).show()}
listViewAdapter.kt
: 어댑터는 조종하는 역할(리스트뷰를 사용하려면 필수로 제작
)
class ListViewAdapter(val List: MutableList<ListViewModel>): BaseAdapter() {
override fun getCount(): Int {
return List.size
}
override fun getItem(p0: Int): Any {
return List[p0]
}
override fun getItemId(p0: Int): Long {
return p0.toLong()
}
override fun getView(p0: Int, p1: View?, p2: ViewGroup?): View {
var convertview = p1
if(convertview == null){
convertview = LayoutInflater.from(p2?.context).inflate(R.layout.listview_item, p2, false)
}
val title = convertview!!.findViewById<TextView>(R.id.listView_item)
val title2 = convertview.findViewById<TextView>(R.id.listView_item2)
title.text = List[p0].text1
title2.text = List[p0].text2
return convertview
}}
override fun getView()
: 화면 전체를 그리는 부분getItem()
은 전체적인 뷰 중 하나에 해당하는 아이템getCoung()
는 리스트 크기를 리턴해줌