RecyclerView 多条目加载和字条目点击事件

package com.example.day02.adapter;

import android.content.Context;
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.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.example.day02.R;
import com.example.day02.bean.NewsBean;
import com.facebook.drawee.view.SimpleDraweeView;
import com.stx.xhb.xbanner.XBanner;

import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
/**
*@date 创建时间:2018/8/3 0003
*@author 
*@Description  recyclerview的多条目适配器
*@version
*/

public class MyAdapter02 extends RecyclerView.Adapter {
    private static final int ITEM_ONE = 1;
    private static final int ITEM_TWO = 2;
    private static final int ITEM_THREE = 3;
    private static final int ITEM_FOUR = 4;
    private Context context;
    private List<NewsBean.DataBean> list;
    private List<String> imageList;
    private List<String> titleList;
    private XBanner xBanner;
    private RecyclerView.ViewHolder viewHolder = null;


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

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        if (viewType == ITEM_ONE) {
            View view = LayoutInflater.from(context).inflate(R.layout.one_layout, parent, false);
            viewHolder = new OneViewHolder(view);
        } else if (viewType == ITEM_TWO) {
            View view = LayoutInflater.from(context).inflate(R.layout.two_layout, parent, false);
            return viewHolder = new TwoViewHolder(view);
        } else if (viewType == ITEM_THREE) {
            View view = LayoutInflater.from(context).inflate(R.layout.three_layout, parent, false);
            return viewHolder = new ThreeViewHolder(view);
        } else if (viewType == ITEM_FOUR) {
            View view = LayoutInflater.from(context).inflate(R.layout.four_layout, parent, false);
            return viewHolder = new FourViewHolder(view);
        }
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, final int position) {
        /*viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                itemClickListener.onItemClickListener(viewHolder,position);
            }
        });*/
        imageList = new ArrayList<>();
        String s = list.get(0).getImages().split("\\|")[0];
        String s1 = list.get(0).getImages().split("\\|")[1];
        String s2 = list.get(0).getImages().split("\\|")[2];
        imageList.add(s);
        imageList.add(s1);
        imageList.add(s2);
        titleList=new ArrayList<>();
        titleList.add(list.get(position).getTitle()+"1");
        titleList.add(list.get(position).getTitle()+"2");
        titleList.add(list.get(position).getTitle()+"3");
        if (holder instanceof OneViewHolder) {
            ((OneViewHolder) holder).oneSimple1.setImageURI(list.get(position).getImages().split("\\|")[0]);
            ((OneViewHolder) holder).oneSimple2.setImageURI(list.get(position).getImages().split("\\|")[1]);
            ((OneViewHolder) holder).oneSimple3.setImageURI(list.get(position).getImages().split("\\|")[2]);

        } else if (holder instanceof TwoViewHolder) {
            xBanner = ((TwoViewHolder) holder).banner;
            xBanner.setData(imageList,titleList);
            xBanner.setmAdapter(new XBanner.XBannerAdapter() {
                @Override
                public void loadBanner(XBanner banner, View view, int position) {
                    Glide.with(context).load(imageList.get(position)).into((ImageView) view);
                }
            });
        } else if (holder instanceof ThreeViewHolder) {
            ((ThreeViewHolder) holder).threeSimple.setImageURI(list.get(position).getImages().split("\\|")[0]);
            ((ThreeViewHolder) holder).threeTitle.setText(list.get(position).getTitle());
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    itemClickListener.onItemClickListener(viewHolder,position,((ThreeViewHolder) holder).threeTitle);
                }
            });
        } else if (holder instanceof FourViewHolder) {
            ((FourViewHolder) holder).fourSimple.setImageURI(list.get(position).getImages().split("\\|")[0]);
            ((FourViewHolder) holder).fourSimple02.setImageURI(list.get(position).getImages().split("\\|")[1]);
            ((FourViewHolder) holder).fourTitle.setText(list.get(position).getTitle());
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    itemClickListener.onItemClickListener(viewHolder,position,((FourViewHolder) holder).fourTitle);
                }
            });
        }
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    @Override
    public int getItemViewType(int position) {
        if (position == 0) {
            return ITEM_ONE;
        } else if (position == 1) {
            return ITEM_TWO;
        } else if ((position + 2)%2 == 0) {
            return ITEM_THREE;
        } else if ((position + 2)%2 == 1) {
            return ITEM_FOUR;
        }
        return super.getItemViewType(position);
    }


    static class OneViewHolder extends RecyclerView.ViewHolder {
        @BindView(R.id.one_simple1)
        SimpleDraweeView oneSimple1;
        @BindView(R.id.one_simple2)
        SimpleDraweeView oneSimple2;
        @BindView(R.id.one_simple3)
        SimpleDraweeView oneSimple3;

        OneViewHolder(View view) {
            super(view);
            ButterKnife.bind(this, view);
        }
    }

    static class TwoViewHolder extends RecyclerView.ViewHolder {
        @BindView(R.id.banner)
        XBanner banner;
        TwoViewHolder(View view) {
            super(view);
            ButterKnife.bind(this, view);
        }
    }

    static class ThreeViewHolder extends RecyclerView.ViewHolder {
        @BindView(R.id.three_simple)
        SimpleDraweeView threeSimple;
        @BindView(R.id.three_title)
        TextView threeTitle;

        ThreeViewHolder(View view) {
            super(view);
            ButterKnife.bind(this, view);
        }
    }

    static class FourViewHolder extends RecyclerView.ViewHolder {
        @BindView(R.id.four_simple)
        SimpleDraweeView fourSimple;
        @BindView(R.id.four_title)
        TextView fourTitle;
        @BindView(R.id.four_simple02)
        SimpleDraweeView fourSimple02;

        FourViewHolder(View view) {
            super(view);
            ButterKnife.bind(this, view);
        }
    }
    private OnItemClickListener itemClickListener;

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

    public interface OnItemClickListener{
        void onItemClickListener(RecyclerView.ViewHolder view, int postion, TextView textView);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值