RecyclayerView通用Adapter

仿照listview的通用adapter写的,也是包括两个部分commonrecyclayerAdapter和recyclayerViewHolder

粘代码:

public abstract class CommonRecyclayerAdapter<T> extends RecyclerView.Adapter<RecyclayerViewHolder> {

    private String TAG="CommonRecyclayerAdapter";
    protected LayoutInflater mInflater;
    protected Context mContext;
    protected List<T> mDatas;
    protected final int mItemLayoutId;

    public CommonRecyclayerAdapter(Context context, List<T> mDatas, int itemLayoutId){

        this.mContext = context;
        this.mInflater = LayoutInflater.from(mContext);
        this.mDatas = mDatas;
        this.mItemLayoutId = itemLayoutId;

    }

    @Override
    public int getItemViewType(int position) {
        return super.getItemViewType(position);
    }

    @Override
    public RecyclayerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        return RecyclayerViewHolder.get(mContext,parent,mItemLayoutId,viewType);
    }

    @Override
    public void onBindViewHolder(RecyclayerViewHolder holder, final int position) {
        convert(holder,getItem(position));
        holder.getmConvertView().setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                onItemClick(view,CommonRecyclayerAdapter.this.getItem(position));
                Log.i(TAG,"onitemclick");
            }
        });
    }

    @Override
    public int getItemCount() {
        return mDatas==null?0:mDatas.size();
    }
    public T getItem(int position){
        return mDatas==null?null:mDatas.get(position);
    }
    public abstract void convert(RecyclayerViewHolder helper, T item);//用来实现设置控件的属性什么鬼的
    public abstract void onItemClick(View view,T item);//这个就是实现item的点击事件

    private RecyclayerViewHolder getViewHolder( ViewGroup parent,int viewType) {

        return RecyclayerViewHolder.get(mContext, parent, mItemLayoutId, viewType);

    }
}

public class RecyclayerViewHolder extends RecyclerView.ViewHolder {

    private final SparseArray<View> mViews;
    private View mConvertView;

    public RecyclayerViewHolder(View itemView) {
        super(itemView);
        mViews=new SparseArray<View>();
        mConvertView=itemView;
    }

    public static RecyclayerViewHolder get(Context context,ViewGroup parent, int mItemLayoutId,int viewType){
        View view= LayoutInflater.from(context).inflate(mItemLayoutId,parent,false);
        RecyclayerViewHolder recyclayerViewHolder=new RecyclayerViewHolder(view);
        return recyclayerViewHolder;
    }

    public <T extends View> T getView(int viewId) {
        View view = mViews.get(viewId);
        if (view == null) {
            view = mConvertView.findViewById(viewId);
            mViews.put(viewId, view);
        }
        return (T) view;
    }

    /**
     * ΪTextView�����ַ     *
     * @param viewId
     * @param text
     * @return
     */
    public RecyclayerViewHolder setText(int viewId, String text) {
        TextView view = getView(viewId);
        view.setText(text);
        return this;
    }

    /**
     * ΪImageView����ͼƬ
     *
     * @param viewId
     * @param drawableId
     * @return
     */
    public RecyclayerViewHolder setImageResource(int viewId, int drawableId) {
        ImageView view = getView(viewId);
        view.setImageResource(drawableId);

        return this;
    }

    /**
     * ΪImageView����ͼƬ
     *
     * @param viewId
     *
     * @return
     */
    public RecyclayerViewHolder setImageBitmap(int viewId, Bitmap bm) {
        ImageView view = getView(viewId);
        view.setImageBitmap(bm);
        return this;
    }

    /**
     * ΪImageView����ͼƬ
     *
     * @param viewId
     *
     * @return
     */
    public RecyclayerViewHolder setImageByUrl(int viewId, String url) {
        x.image().bind((ImageView)getView(viewId),url );
        return this;
    }

    public View getmConvertView(){
        return mConvertView;
    }

}


好了,放到这里不好的地方多多指正,共同进步!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值