Kotlin学习笔记——ListView

    #define 小毛驴 xml

使用方法

  1. 设计好界面
  2. 新建一个小毛驴文件,这个小毛驴文件是ListView中,每一个Item的界面布局文件
  3. (可选)编写一个数据类,用来保存每个item中的数据,用data class可以很方便
  4. 编写一个继承BaseAdapter适配器的类
class ListViewAdapter(private val context: Context, private val strList:MutableList<myItems>, private val background:Int) : BaseAdapter() {
    override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
        var view = convertView
        val holder:ViewHolder
        if (convertView == null) {
            view = LayoutInflater.from(context).inflate(R.layout.item, null)
            //我猜这个函数的作用是指定这个类所对应的小毛驴文件
            holder = ViewHolder()
            holder.ll_item = view.findViewById<LinearLayout>(R.id.ll_item)
            holder.iv_icon = view.findViewById<ImageView>(R.id.iv_icon)
            holder.tv_name = view.findViewById<TextView>(R.id.tv_name)
            holder.tv_desc = view.findViewById<TextView>(R.id.tv_desc)
            view.tag = holder
        } else {
            holder = (view?.tag) as ViewHolder
        }
        //以上是固定格式
        val myItem = strList[position]
        //传进来的数据数组,适配器根据数组大小反复调用这个函数构造ViewList
        //position是当前位置,对应数组下标
        holder.ll_item.setBackgroundColor(background)
        holder.iv_icon.setImageResource(myItem.image)
        holder.tv_name.text = myItem.name
        holder.tv_desc.text = myItem.desc
        //以上是自定义每个控件的显示内容,根据之前传进来的List里面的数据
        return view!!
    }

    override fun getItem(position: Int): Any = strList[position]
    override fun getItemId(position: Int): Long = position.toLong()
    override fun getCount(): Int = strList.size

    inner class ViewHolder {
        lateinit var ll_item:LinearLayout
        lateinit var iv_icon:ImageView
        lateinit var tv_name:TextView
        lateinit var tv_desc:TextView
    }
}
  1. 如果编写了数据类(起了一个c++结构体的作用,因为数组只能传递一个),创建对应的List并且赋值
  2. 给ListView添加适配器
        var item:MutableList<myItems> = mutableListOf()
        val imageIds = arrayOf(R.mipmap.a, R.mipmap.b, R.mipmap.c, R.mipmap.d, R.mipmap.e)
        var name = arrayOf("超级大帅哥刘甜甜", "还是超级大帅哥刘甜甜", "可爱的橘猫", "性感裸男","周周")
        var desc = arrayOf("是他是他就是他,我们的大帅哥,刘天天", "是他是他还是他,我们的大帅哥,刘天天", "刘天天最想养的橘猫", "刘天天最喜欢的性感裸男","刘天天最喜欢的大明星周周")
        //各种数据
        setContentView(R.layout.activity_clickhere)
        for (i in imageIds.indices) {
            item.add(myItems(name[i], desc[i], imageIds[i]))
        }
        //初始化要传递的List

        var list:ListView = findViewById<ListView>(R.id.list)
        list.adapter = ListViewAdapter(this,item ,Color.WHITE)//你刚才自己写的适配器类
        //为ListView添加适配器
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容