RecycleView适配器及多条目及点击事件

来源:互联网 发布:nginx 根目录 跳转 编辑:程序博客网 时间:2024/05/23 20:47
本代码仅供参考,请勿直接使用
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {    private Context context;    private List<ItemBean> list;    private OnItemListener onItemListener;    private static int TYPE1 = 0;    private static int TYPE2 = 1;    public interface OnItemListener {        public void onItemClick(ItemBean itemBean, int position);        public void onItemLongClick(ItemBean itemBean, int position);    }    public void setOnItemListener(OnItemListener onItemListener) {        this.onItemListener = onItemListener;    }    public MyAdapter(Context context, List<ItemBean> list) {        this.context = context;        this.list = list;    }    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        //加载写好的item布局        RecyclerView.ViewHolder viewHolder = null;        if (viewType == TYPE1) {            View view1 = LayoutInflater.from(context).inflate(R.layout.item1, parent, false);            viewHolder = new Type1Viewholder(view1);        } else {            View view2 = LayoutInflater.from(context).inflate(R.layout.item2, parent, false);            viewHolder = new Type2Viewholder(view2);        }        return viewHolder;    }    @Override    public int getItemViewType(int position) {        return position % 2 == 0 ? TYPE1 : TYPE2;    }    @Override    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {        //给item布局里的组件设置值        if (holder instanceof Type1Viewholder) {            final ItemBean itemBean = list.get(position);            Type1Viewholder type1Viewholder = (Type1Viewholder) holder;            type1Viewholder.tvName.setText(itemBean.getName());            type1Viewholder.tvAge.setText(itemBean.getAge());            type1Viewholder.ll.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View view) {                    if (onItemListener != null) {                        onItemListener.onItemClick(itemBean, position);                    }                }            });            type1Viewholder.ll.setOnLongClickListener(new View.OnLongClickListener() {                @Override                public boolean onLongClick(View view) {                    if (onItemListener != null) {                        onItemListener.onItemLongClick(itemBean, position);                    }                    return true;                }            });        } else {            Type2Viewholder type2Viewholder = (Type2Viewholder) holder;        }    }    @Override    public int getItemCount() {        return list.size();    }    private class Type1Viewholder extends RecyclerView.ViewHolder {        //类似listview的adapter的viewholder        private TextView tvName;        private TextView tvAge;        private LinearLayout ll;        public Type1Viewholder(View itemView) {            super(itemView);            tvName = itemView.findViewById(R.id.tv_name);            tvAge = itemView.findViewById(R.id.tv_age);            ll = itemView.findViewById(R.id.ll);        }    }    private class Type2Viewholder extends RecyclerView.ViewHolder {        public Type2Viewholder(View itemView) {            super(itemView);        }    }    public void refresh(List<ItemBean> l) {        list.clear();        list.addAll(l);        notifyDataSetChanged();    }    public void addItem(ItemBean itemBean) {        list.add(0, itemBean);        notifyItemInserted(0);    }}