关于对vlayout的一个简单的封装。

253 阅读1分钟

先贴代码。 思想其实很简单。 不管是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纯粹是一个单纯的使用案例。 贴出来,如果有什么不对的地方,欢迎大家指正。