初用Kotlin 之 RecyclerView通用适配器

一  在编辑适配器之前,我们需要一个可以自己定制方法的ViewHolder。不废话 上代码 :

class MyHodler(var Itemview: View) : RecyclerView.ViewHolder(Itemview) {
		// 设置字体方法 ,图片 ,显示隐藏,点击事件 都可以随意定制
       //比如 settext方法
    fun settext(id:Int,string: String) {  //设置settext的方法 随项目需求自己定制内容
        var textView= Itemview.findViewById<TextView>(id)
        textView.text=string
    }
}

二 适配器 我们把设置数据的方法暴露在调用处,方便于随时修改:

	                    // layoutid:布局id  , binhodel:内置接口 <T>泛型为数据类

    class KmyAteder<T>(var layoutid: Int, var list: ArrayList<T>, var binmyhodel: BindmyInterface) : RecyclerView.Adapter<MyHodler>() {
                    

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): KoneHodler {
        var infler = LayoutInflater.from(parent.context).inflate(layoutid, parent, false)

        return KoneHodler(infler)
    }

    override fun getItemCount(): Int {
        return list.size
    }

    override fun onBindViewHolder(holder: KoneHodler, position: Int) {
        binmyhodel.binhod(holder, position)
    }

    interface BindmyInterface {	//暴露接口
        fun binhod(hodler: KoneHodler, position: Int)
    }
}

三 调用 :


class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        initview()

    }

    
    private fun initview() {				
        val linearLaym = LinearLayoutManager(this, LinearLayout.VERTICAL, false)  
        recyclerView.layoutManager = linearLaym

        val list: ArrayList<(bean对象)> = ArrayList()				
            for (i in 0..4) {								
                list.add((bean对象))  //测试数据
            }

        recyclerView.adapter = KmyAteder<(bean对象)>(R.layout.(item的布局id), list, 
            object  :   KoneAteder.BindhodleInterface { 

                   override fun binhod(hodler: KoneHodler, position: Int) {

                        hodler.settext(R.id.(view的id), list[position])
                }
            })
     }

  

}

四 缺点是不支持多布局,多布局的通用适配器以后更新>.<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值