先贴代码。 思想其实很简单。 不管是listView的适配器,还是recyclerView的适配器,封装的思路都很简单,都是要对立面的viewHolder和getView方法进行封装。 DelegateAdapter已经进行过一次封装了,所以不太需要太多的处理。 只要简单的对onBindViewHolder()处理就好了。 话不多说,直接上代码。 估计大家基本都能看得懂。之所以写一遍,纯粹是为了以后使用方便。 简单的适配器封装。
package com.myvlayout.base
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.alibaba.android.vlayout.DelegateAdapter
import com.alibaba.android.vlayout.LayoutHelper
public abstract class BaseDelegateAdapter(private val context : Context, private val layoutHelper: LayoutHelper, private val countItem : Int, private val layoutId : Int) : DelegateAdapter.Adapter<BaseDelegateAdapter.BaseViewHolder>() {
override fun onBindViewHolder(holder: BaseViewHolder, position: Int) {
loadViewHolder(holder,position)
}
override fun onCreateLayoutHelper(): LayoutHelper {
return layoutHelper
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
return BaseViewHolder(
LayoutInflater.from(context).inflate(layoutId, parent, false)
)
}
override fun getItemCount(): Int {
return countItem
}
public abstract fun loadViewHolder(holder: BaseViewHolder, position: Int)
class BaseViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {}
}
这时最基础的base适配器,使用也很简单。使用方法如下:
public class Part1Adapter(private val context : Context, private val layoutHelper: LayoutHelper, private val countItem : Int, private val layoutId : Int, private val list:MutableList) : BaseDelegateAdapter(context, layoutHelper, countItem, layoutId) {
override fun loadViewHolder(holder: BaseViewHolder, position: Int) {
holder.itemView.findViewById<TextView>(R.id.tv_Name).text = "xixi"
}
}
Part1Adapter纯粹是一个单纯的使用案例。 贴出来,如果有什么不对的地方,欢迎大家指正。