ListView
1.创建一个类作为ListView适配器的适配类型
class Fruit(val name:String,val imageId:Int)
成员变量包括名字和图片id
2.编写一个继承ArrayAdapter的适配器:
class FruitAdapter(activity: Activity,val resourceId:Int,data:List<Fruit>):ArrayAdapter<Fruit>(activity,resourceId,data) {
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val view = LayoutInflater.from(context).inflate(resourceId,parent,false)//为view加载布局
val image:ImageView = view.findViewById(R.id.image)
val name:TextView = view.findViewById(R.id.text)//获取布局中的两个控件
val fruit = getItem(position)//获取当前项fruit实例
if(fruit != null){
image.setImageResource(fruit.imageId)
name.text = fruit.name//调用实例中的数据设置控件
}
return view//返回子布局
}
}
ArrayAdapter的三个参数为上下文,布局文件,数据
重写getView方法返回子布局
inflate的三个参数:布局文件,上下文,false为标准写法
获取到imageview和textview控件
getItem获取list(data)当前项的fruit实例,然后设置图片和文字
3.修改main
class MainActivity : AppCompatActivity() {
private val list = ArrayList<Fruit>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
initFruits()
val adapter = FruitAdapter(this,R.layout.fruit,list)
listview.adapter = adapter
}
private fun initFruits(){
repeat(2){
list.add(Fruit("yxy",R.drawable.yxy))
list.add(Fruit("zcy",R.drawable.zcy))
}
}
}
新建一个Fruit类型的list,获取 FruitAdapter适配器,initfruits向list中添加数据,然后设置list的适配器为 FruitAdapter
4.总结流程
要在listview中添加Fruit类型的list --------------> 定义Fruit类 Fruit(val name:String,val imageId:Int)
向list中添加数据 -----------------> list.add(Fruit("zcy",R.drawable.zcy)) 名字和图片资源
为我们自定义的Fruit类型创建适配器---------------------->FruitAdapter
FruitAdapter:作用是适配我们的布局,所以重写getView,返回子布局