BaseRecyclerView

BaseViewHolder

import android.view.View;
import androidx.recyclerview.widget.RecyclerView;
import android.widget.TextView;
import android.util.SparseArray;

public class BaseViewHolder extends RecyclerView.ViewHolder {

	private View mRootView;
	private SparseArray<View> mViews;
    public BaseViewHolder(View view){
		super(view);
		mRootView=view;
		mViews=new SparseArray<>();
	}

	public BaseViewHolder setText(int resid,CharSequence text){
		TextView tv=findView(resid);
		tv.setText(text);
		return this;
	}
	
	public <T extends View> T findView(int resid){
		View view=mViews.get(resid);
		if(view==null){
			view=mRootView.findViewById(resid);
			mViews.put(resid,view);
		}
		return (T)view;
	}
}

BaseAdapter

import androidx.recyclerview.widget.RecyclerView;
import android.view.ViewGroup;
import java.util.List;
import android.view.View;
import android.view.LayoutInflater;

public abstract class BaseAdapter<T> extends RecyclerView.Adapter<BaseViewHolder> {

	
	private int mLayoutResId;
	private List<T> mDatas;
	
	
	public BaseAdapter(int layoutResId, List<T> datas){
		mLayoutResId=layoutResId;
		mDatas=datas;
	}
	@Override
	public BaseViewHolder onCreateViewHolder(ViewGroup p1, int p2) {
		View view=LayoutInflater.from(p1.getContext()).inflate(mLayoutResId, p1, false);
		return new BaseViewHolder(view);
	}

	@Override
	public void onBindViewHolder(BaseViewHolder p1, int p2) {
		final T data=mDatas.get(p2);
		convert(p1,data);
		p1.itemView.setOnClickListener(new View.OnClickListener(){

				@Override
				public void onClick(View p1) {
					if(mOnItemClickListener!=null){
						mOnItemClickListener.onItemClick(p1, data);
					}
				}
			});
	}

	@Override
	public int getItemCount() {
		return mDatas==null?0:mDatas.size();
	}

    public BaseAdapter setOnItemClick(OnItemClickListener<T> listener){
		mOnItemClickListener=listener;
		return this;
	}
	
	
	private OnItemClickListener<T> mOnItemClickListener;
	public interface OnItemClickListener<T>{
		public void onItemClick(View view, T item);
	}
	
    public abstract void convert(BaseViewHolder holder, T itemData);
    
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值