📅  最后修改于: 2023-12-03 14:43:40.792000             🧑  作者: Mango
ListView是Android中最常用的控件之一,应用广泛。但是,在默认情况下,ListView的样式可能不符合我们的需求,这时就需要自定义ListView。本文将介绍如何使用Kotlin自定义ListView。
<!-- listview_item.xml -->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp">
<ImageView
android:id="@+id/item_imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher_background"/>
<TextView
android:id="@+id/item_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Item text"/>
</LinearLayout>
其中,我们使用了一个LinearLayout作为item的根布局,在里面添加了一个ImageView和一个TextView。
class MyListAdapter(private val items: Array<String>, private val context: Context) : BaseAdapter() {
override fun getCount(): Int {
return items.size
}
override fun getItem(position: Int): Any {
return items[position]
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
val view = convertView ?: LayoutInflater.from(context).inflate(R.layout.listview_item, parent, false)
val itemImageView = view.findViewById<ImageView>(R.id.item_imageview)
val itemTextView = view.findViewById<TextView>(R.id.item_textview)
itemImageView.setImageResource(R.drawable.ic_launcher_background)
itemTextView.text = items[position]
return view
}
}
其中,我们传入了一个String数组和一个Context对象作为参数,用于初始化数据和LayoutInflater。在getView方法中,我们通过LayoutInflater获取item布局文件的View对象,然后根据需求找到里面的ImageView和TextView控件,设置它们的属性,最后返回View对象。
class MainActivity : AppCompatActivity() {
private lateinit var myListView: ListView
private val items = arrayOf("item1", "item2", "item3", "item4")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
myListView = findViewById(R.id.my_listview)
val adapter = MyListAdapter(items, this)
myListView.adapter = adapter
}
}
其中,我们传入了一个String数组和当前Activity的Context对象作为参数,创建了一个MyListAdapter对象,并将它设置为ListView的Adapter对象。
至此,我们就完成了自定义ListView的操作。界面效果如下图所示:
本文介绍了如何使用Kotlin自定义ListView,从定义item布局文件、实现Adapter、使用ListView三个方面进行了详细的讲解,希望对大家有所帮助。