Android RecyclerView 多条目加载 +接口回调监听

public class RecyclerViewAdapter extends RecyclerView.Adapter{

    private List<NewsBean.DataBeanX.DataBean> list;

    private Context context;

    public RecyclerViewAdapter(List<NewsBean.DataBeanX.DataBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        if (viewType == 1){

            View inflate = LayoutInflater.from(context).inflate(R.layout.item_recyclerview_one, parent, false);

            ViewHolder01 viewHolder01 = new ViewHolder01(inflate);

            return viewHolder01;
        }else{

            View inflate02 = LayoutInflater.from(context).inflate(R.layout.item_recyclerviews, parent, false);

            ViewHolder02 viewHolder02 = new ViewHolder02(inflate02);

            return viewHolder02;
        }

    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) {

        if (holder instanceof ViewHolder01){

            String url = "http://365jia.cn/uploads/appletrecommend/201804/5ad6ba6c6bb8b.jpg";

            ViewHolder01 viewHolder01 = (ViewHolder01)holder;

            viewHolder01.tv_title.setText(list.get(position).getTitle());

            String pic1 = list.get(position).getPics().get(0);

            ImageLoader.getInstance().displayImage(pic1+url,viewHolder01.item_img, MyApp.getOptions());

            viewHolder01.tv_comment.setText(list.get(position).getViews()+"评论");
            viewHolder01.tv_praise.setText(list.get(position).getViews_label()+"赞");

            ((ViewHolder01) holder).item_img.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    onItemClickListener.onItemClick(v,position);

                }
            });

            ((ViewHolder01) holder).tv_title.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {

                    onLongClickListener.onLongClick(v,position);

                    return false;
                }
            });

        }else if (holder instanceof ViewHolder02){

            String url = "http://365jia.cn/uploads/special/tuku/201804/5ad6ab1059e6566912.jpg";

            ViewHolder02 viewHolder02 = (ViewHolder02) holder;

            viewHolder02.item_title02.setText(list.get(position).getTitle());

            String pic1 = list.get(position).getPics().get(0);
            String pic2 = list.get(position).getPics().get(1);
            String pic3 = list.get(position).getPics().get(2);

            ImageLoader.getInstance().displayImage(pic1+url,viewHolder02.item_img01,MyApp.getOptions());
            ImageLoader.getInstance().displayImage(pic2+url,viewHolder02.item_img02,MyApp.getOptions());
            ImageLoader.getInstance().displayImage(pic3+url,viewHolder02.item_img03,MyApp.getOptions());

            ((ViewHolder02) holder).item_img01.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    onItemClickListener.onItemClick(v,position);

                }
            });

            ((ViewHolder02) holder).item_img02.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    onItemClickListener.onItemClick(v,position);

                }
            });

            ((ViewHolder02) holder).item_img03.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    onItemClickListener.onItemClick(v,position);

                }
            });


            ((ViewHolder02) holder).item_title02.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {

                    onLongClickListener.onLongClick(v,position);

                    return false;
                }
            });

        }

    }

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

    @Override
    public int getItemViewType(int position) {

        List<String> pics = list.get(position).getPics();

        if (pics.size()==1){

            return 1;

        }

        return 2;

    }

    class ViewHolder01 extends RecyclerView.ViewHolder {

        private final TextView tv_title,tv_comment,tv_praise;

        private final ImageView item_img;

        public ViewHolder01(View itemView) {
            super(itemView);

            tv_title = itemView.findViewById(R.id.tv_title);
            tv_comment = itemView.findViewById(R.id.tv_comment);
            tv_praise = itemView.findViewById(R.id.tv_praise);

            item_img = itemView.findViewById(R.id.item_img);

        }
    }


    class ViewHolder02 extends RecyclerView.ViewHolder{

        TextView item_title02;

        ImageView item_img01,item_img02,item_img03;

        public ViewHolder02(View itemView) {
            super(itemView);

            item_title02 = itemView.findViewById(R.id.tv_title_02);

            item_img01 = itemView.findViewById(R.id.item_img01);
            item_img02 = itemView.findViewById(R.id.item_img02);
            item_img03 = itemView.findViewById(R.id.item_img03);

        }
    }

    private  OnItemClickListener onItemClickListener;

    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        this.onItemClickListener = onItemClickListener;
    }

    public interface OnItemClickListener{

        void onItemClick(View v,int position);

    }

    private  OnLongClickListener onLongClickListener;

    public void setOnLongClickListener(OnLongClickListener onLongClickListener) {

        this.onLongClickListener = onLongClickListener;

    }

    public interface OnLongClickListener{

        void onLongClick(View v,int position);

    }

}

猜你喜欢

转载自blog.csdn.net/as89751/article/details/80874446