RecyclerView适配器的简单封装-BaseAdapter

package com.beini.adapter;

import android.support.annotation.IdRes;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import com.beini.bean.BaseBean;
import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;


/**
 * Created by beini on 2017/2/18.
 */

public abstract class BaseAdapter<T> extends RecyclerView.Adapter<BaseAdapter.ViewHolder> implements View.OnClickListener, View.OnLongClickListener {

    private List<T> baseList;
    private int layoutId;

    public BaseAdapter(@NonNull BaseBean<T> baseBean) {
        this.baseList = baseBean.getBaseList();
        this.layoutId = baseBean.getId();
    }


    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(layoutId, parent, false);
        ViewHolder holder = new ViewHolder(view);
        view.setOnClickListener(this);
        view.setOnLongClickListener(this);
        return holder;
    }

    @Override
    public int getItemCount() {
        if (baseList == null || baseList.size() == 0) {
            return 0;
        }
        return baseList.size();
    }


    protected class ViewHolder extends RecyclerView.ViewHolder {
        View view;

        ViewHolder(View view) {
            super(view);
            this.view = view;
        }
    }

    public void addItem(T bean, int postion) {
        baseList.add(postion, bean);
        notifyItemInserted(postion);
        notifyItemRangeChanged(postion, baseList.size());
    }

    public void removeItem(int postion) {
        baseList.remove(postion);
        notifyItemRemoved(postion);
        notifyItemRangeChanged(postion, baseList.size());
    }

    protected TextView getTextView(@NonNull ViewHolder viewHolder, @IdRes int viewId) {
        return (TextView) viewHolder.view.findViewById(viewId);
    }

    protected ImageView getImageView(@NonNull ViewHolder viewHolder, @IdRes int viewId) {
        return (ImageView) viewHolder.view.findViewById(viewId);
    }

    protected Button getButton(@NonNull ViewHolder viewHolder, @IdRes int viewId) {
        return (Button) viewHolder.view.findViewById(viewId);
    }

    protected SimpleDraweeView getSimpleDraweeView(@NonNull ViewHolder viewHolder, @IdRes int viewId) {
        return (SimpleDraweeView) viewHolder.view.findViewById(viewId);
    }

    //item  click 事件
    private OnItemClickListener itemClickListener = null;

    public void setItemClick(OnItemClickListener itemClickListener) {
        this.itemClickListener = itemClickListener;
    }

    @Override
    public void onClick(View view) {
        if (itemClickListener != null)
            itemClickListener.onItemClick(view, (int) view.getTag());
    }

    public interface OnItemClickListener {
        void onItemClick(View view, int position);
    }

    // item onlongClick 事件
    private onItemLongClickListener itemLongClickListener = null;

    public void setOnItemLongClickListener(onItemLongClickListener onItemLongClickListener) {
        this.itemLongClickListener = onItemLongClickListener;
    }

    @Override
    public boolean onLongClick(View v) {
        if (itemLongClickListener != null)
            itemLongClickListener.onItemLongClick(v, (int) v.getTag());
        return true;
    }

    private interface onItemLongClickListener {
        void onItemLongClick(View view, int position);
    }
}

package com.beini.bean;

import android.support.annotation.LayoutRes;
import android.support.annotation.NonNull;

import java.util.List;

/**
 * Created by beini on 2017/2/18.
 */

public class BaseBean<T> {
    private int id;
    private List<T> baseList;

    public BaseBean(@LayoutRes int id, @NonNull List<T> baseList) {
        this.id = id;
        this.baseList = baseList;
    }

    public int getId() {
        return id;
    }

    public void setId(@LayoutRes int id) {
        this.id = id;
    }

    public List<T> getBaseList() {
        return baseList;
    }

    public void setBaseList(@NonNull List<T> baseList) {
        this.baseList = baseList;
    }
}
使用:

package com.beini.adapter;

import android.support.v7.widget.RecyclerView;

import com.beini.R;
import com.beini.bean.BaseBean;

import java.util.List;

/**
 * Created by beini on 2017/2/18.
 */

public class HomeListAdapter extends BaseAdapter {
    private List<String> strings;

    public HomeListAdapter(BaseBean<String> baseBean) {
        super(baseBean);
        this.strings = baseBean.getBaseList();
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        holder.itemView.setTag(position);
        getTextView((ViewHolder) holder, R.id.text_home_list).setText(strings.get(position));
    }
}
HomeListAdapter homeListAdapter = new HomeListAdapter(new BaseBean<>(R.layout.item_home, functionList));



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值