XRecyclerView多条目加载

来源:互联网 发布:mac os 配置 postman 编辑:程序博客网 时间:2024/06/05 11:33

导入依赖包

compile 'com.jcodecraeer:xrecyclerview:1.3.2'

API

public static final String TYPE_PATH = "http://192.168.28.5/mobile/index.php?act=goods_class";public static final String TYPE_HOME="http://result.eolinker.com/umIPmfS6c83237d9c70c7c9510c9b0f97171a308d13b611?uri=homepage";XML中
<com.jcodecraeer.xrecyclerview.XRecyclerView    android:id="@+id/xre_xrv"    android:layout_width="wrap_content"    android:layout_height="wrap_content"></com.jcodecraeer.xrecyclerview.XRecyclerView>
条目点击所需要的接口
public interface OnItemClickLitener {    void onItemClick(View view, int position);    void onItemLongClick(View view , int position);}
banner所需要的图片类
public class GlideImageLoader extends ImageLoader{    @Override    public void displayImage(Context context, Object path, ImageView imageView) {        Glide.with(context).load(path).into(imageView);    }}

MainActivity

public class FragmentOne extends Fragment{    private XRecyclerView xr;    private List<String> list=new ArrayList<>();    private int curr;    private XRAdapter adapter;    private ImageView imageView;    EditText search;   // private CountdownView countdownView;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view=inflater.inflate(R.layout.fragment_one,null);        imageView=(ImageView) view.findViewById(R.id.erweima);        imageView.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                 /*扫描二维码*/                startActivityForResult(new Intent(getActivity(), CaptureActivity.class),0);            /*生成二维码*/            }        });        //搜索框点击事件        search=(EditText) view.findViewById(R.id.search);        //搜索框跳转        search.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Intent intent=new Intent(getActivity(), SearchActivity.class);                startActivity(intent);            }        });        xr=(XRecyclerView) view.findViewById(R.id.xre_xrv);       // countdownView=(CountdownView) view.findViewById(R.id.countdownView);       // countdownView.start(1000000);        //加布局管理器        LinearLayoutManager layoutManager=new LinearLayoutManager(getActivity());        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);        xr.setLayoutManager(layoutManager);        xr.setLoadingListener(new XRecyclerView.LoadingListener() {            @Override            public void onRefresh() {//下拉刷新                curr=0;                list.clear();                getData(API.TYPE_HOME,curr);                xr.refreshComplete();            }            @Override            public void onLoadMore() {//上拉加载                 curr++;//实行分页                getData(API.TYPE_HOME,curr);                xr.refreshComplete();            }        });        getData(API.TYPE_HOME,1);        return view;    }    private void getData(String url,int curr)    {        OkHttp3Utils.getInstance().doGet(url, new GsonObjectCallback<HomeBean>() {            @Override            public void onUi(HomeBean homeBean) {                homeBean.getMsg();                XRAdapter  mxradapter=new XRAdapter(getActivity(),homeBean.getData());                xr.setAdapter(mxradapter);            }            @Override            public void onFailed(Call call, IOException e) {            }        });    }}

XRAdapter中

public class XRAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{    HomeBean.DataBean list;    Context mcontext;    ArrayList mlist,mlist1;    private ArrayList<HomeBean.DataBean.Ad5Bean> ad5;    List<HomeBean.DataBean.ActivityInfoBean.ActivityInfoListBean> data1;    //List<HomeBean.DataBean.SubjectsBean> s;    List<HomeBean.DataBean.SubjectsBean.GoodsListBeanX> goods;    List<HomeBean.DataBean.SubjectsBean.GoodsRelationListBean> goods2;    private  enum Item_Type{        Typeone,Typetwo,Typethree,Typefour,Typefive,Typesix    }    public XRAdapter(Context mcontext, HomeBean.DataBean list) {        this.mcontext = mcontext;        this.list = list;    }    @Override    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        if (viewType == Item_Type.Typeone.ordinal()) {            View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycle_item_a, null);            ViewHolderA viewHolder = new ViewHolderA(mView);            return viewHolder;        } else if (viewType == Item_Type.Typetwo.ordinal()) {            View mView1 = LayoutInflater.from(mcontext).inflate(R.layout.recycle_item_b, null);            ViewHolderB viewHolder = new ViewHolderB(mView1);            return viewHolder;        } else if (viewType == Item_Type.Typethree.ordinal()) {            View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycle_item_c, null);            ViewHolderC viewHolder = new ViewHolderC(mView);            return viewHolder;        }else if (viewType == Item_Type.Typefour.ordinal()) {            View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycle_item_d, null);            ViewHolderD viewHolder = new ViewHolderD(mView);            return viewHolder;        }else if(viewType==Item_Type.Typefive.ordinal())        {            View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycle_item_e, null);            ViewHolderE viewHolder = new ViewHolderE(mView);            return viewHolder;        }else if(viewType==Item_Type.Typesix.ordinal())        {            View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycle_item_f, null);            ViewHolderF viewHolder = new ViewHolderF(mView);            return viewHolder;        }        return null;    }    @Override    public void onBindViewHolder(ViewHolder holder, int position) {        if (holder instanceof ViewHolderA) {            mlist=new ArrayList();            for(int i=0;i<list.getAd1().size();i++){                mlist.add(list.getAd1().get(i).getImage());            }            //设置图片加载器            ((ViewHolderA) holder).mbanner.setImageLoader(new GlideImageLoader());            ((ViewHolderA) holder).mbanner.setImages(mlist);            ((ViewHolderA) holder).mbanner.start();        } else if (holder instanceof ViewHolderB) {            final List<HomeBean.DataBean.Ad5Bean> ad5 = list.getAd5();            ViewHolderB holderB= (ViewHolderB) holder;            holderB.recyclerView.setLayoutManager(new GridLayoutManager(mcontext,ad5.size()));            Home_TwoAdapter adapter = new Home_TwoAdapter(ad5, mcontext);            holderB.recyclerView.setAdapter(adapter);            adapter.setOnItemClickLitener(new OnItemClickLitener() {                @Override                public void onItemClick(View view, int position) {                    Intent intent=new Intent(mcontext,DianjiActivity.class);                    intent.putExtra("aaa",ad5.get(position).getUrl());                    mcontext.startActivity(intent);                }                @Override                public void onItemLongClick(View view, int position) {                }            });        } else if (holder instanceof ViewHolderC) {            List<HomeBean.DataBean.ActivityInfoBean.ActivityInfoListBean> data1 = list.getActivityInfo().getActivityInfoList();            ViewHolderC holderC= (ViewHolderC) holder;            holderC.countdownView.start(100000000);            LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mcontext);            linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);            holderC.recyclerView1.setLayoutManager(linearLayoutManager);            Home_threeAdpater adapter1 = new Home_threeAdpater(data1,mcontext);            holderC.recyclerView1.setAdapter(adapter1);        }else if (holder instanceof ViewHolderD) {           /* mlist1=new ArrayList();            for(int i=0;i<list.getSubjects().size();i++){                mlist1.add(list.getSubjects().get(i).getImage());            }            //设置图片加载器            ((ViewHolderD) holder).mybanner1.setImageLoader(new GlideImageLoader());            ((ViewHolderD) holder).mybanner1.setImages(mlist1);            ((ViewHolderD) holder).mybanner1.start();*/             String s=list.getSubjects().get(2).getDescImage();            ViewHolderD holderD= (ViewHolderD) holder;            ImageLoader.getInstance().displayImage(s,((ViewHolderD) holder).d_img);        }else if (holder instanceof ViewHolderE)        {                 goods = list.getSubjects().get(2).getGoodsList();                ViewHolderE holderE= (ViewHolderE) holder;                LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mcontext);                linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);                holderE.recy2.setLayoutManager(linearLayoutManager);                Home_fourAdpater adapter2 = new Home_fourAdpater(goods,mcontext);                holderE.recy2.setAdapter(adapter2);        }else if(holder instanceof ViewHolderF)        {            goods2=list.getSubjects().get(3).getGoodsRelationList();            ViewHolderF holderF= (ViewHolderF) holder;            holderF.recy3.setLayoutManager(new GridLayoutManager(mcontext,2));            Home_fiveAdpater adapter3 = new Home_fiveAdpater(goods2,mcontext);            holderF.recy3.setAdapter(adapter3);           adapter3.setOnItemClickLitener(new OnItemClickLitener() {                @Override                public void onItemClick(View view, int position) {                    Intent intent=new Intent(mcontext, DianJi2Activity.class);                   intent.putExtra("b",goods2.get(position).getGoodsName());                    mcontext.startActivity(intent);                }                @Override                public void onItemLongClick(View view, int position) {                }            });        }    }    @Override    public int getItemCount() {        return 6;    }    @Override    public int getItemViewType(int position) {        if (position == 0) {            return Item_Type.Typeone.ordinal();        } else if (position == 1) {            return Item_Type.Typetwo.ordinal();        } else if (position == 2) {            return Item_Type.Typethree.ordinal();        }else if (position == 3) {            return Item_Type.Typefour.ordinal();        }else if(position==4)        {            return Item_Type.Typefive.ordinal();        }else if(position==5)        {            return Item_Type.Typesix.ordinal();        }        return -1;    }    class ViewHolderA extends ViewHolder {        public Banner mbanner;        public ViewHolderA(View itemView) {            super(itemView);            mbanner = (Banner) itemView.findViewById(R.id.mybanner);            mbanner.setOnBannerListener(new OnBannerListener() {                @Override                public void OnBannerClick(int position) {                    Intent intent = new Intent(mcontext, DianjiActivity.class);                    mcontext.startActivity(intent);                }            });        }    }    class ViewHolderB extends ViewHolder {        RecyclerView recyclerView;        public ViewHolderB(View itemView) {            super(itemView);            recyclerView=(RecyclerView) itemView.findViewById(R.id.recy);        }    }    class ViewHolderC extends ViewHolder {        public RecyclerView recyclerView1;        CountdownView countdownView;        public ViewHolderC(View itemView) {            super(itemView);            recyclerView1=(RecyclerView) itemView.findViewById(R.id.recy1);            countdownView=(CountdownView) itemView.findViewById(R.id.countdownView);        }    }    class ViewHolderD extends ViewHolder {       /* public Banner mybanner1;*/        public ImageView d_img;        public ViewHolderD(View itemView) {            super(itemView);           /* mybanner1 = (Banner) itemView.findViewById(R.id.mybanner1);*/            d_img=(ImageView) itemView.findViewById(R.id.d_img);        }    }    class ViewHolderE extends ViewHolder{         RecyclerView recy2;        public ViewHolderE(View itemView) {            super(itemView);           recy2=(RecyclerView) itemView.findViewById(R.id.recy2);        }    }    class ViewHolderF extends ViewHolder{        RecyclerView recy3;        public ViewHolderF(View itemView) {            super(itemView);            recy3=(RecyclerView) itemView.findViewById(R.id.recy3);        }    }}

recycle_item_a

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:layout_width="match_parent"    android:layout_height="150dp">    <com.youth.banner.Banner        android:id="@+id/mybanner"        android:layout_width="match_parent"        android:layout_height="150dp">    </com.youth.banner.Banner></LinearLayout>

recycle_item_b

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="wrap_content"    android:orientation="horizontal"    android:layout_height="wrap_content">   <android.support.v7.widget.RecyclerView       android:id="@+id/recy"       android:layout_width="wrap_content"       android:layout_height="wrap_content">   </android.support.v7.widget.RecyclerView></LinearLayout>

Home_TwoAdapter

public class Home_TwoAdapter extends RecyclerView.Adapter<MyViewHolder> {     Context context;    List<HomeBean.DataBean.Ad5Bean> ad5;    public Home_TwoAdapter(List<HomeBean.DataBean.Ad5Bean> ad5, Context context) {        this.ad5 = ad5;        this.context = context;    }    //条目点击    private OnItemClickLitener mOnItemClickLitener;    public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener)    {        this.mOnItemClickLitener = mOnItemClickLitener;    }    @Override    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        MyViewHolder holder=null;        holder = new MyViewHolder(LayoutInflater.from(context).inflate(R.layout.item_home, parent, false));        return holder;    }    public void onBindViewHolder(final MyViewHolder holder, int position){        holder.tv.setText(ad5.get(position).getTitle());        //ImageLoader imageLoader=ImageLoader.getInstance();        ImageLoader.getInstance().displayImage(ad5.get(position).getImage(),holder.imageView);        // 如果设置了回调,则设置点击事件        if (mOnItemClickLitener != null)        {            holder.itemView.setOnClickListener(new View.OnClickListener()            {                @Override                public void onClick(View v)                {                    int pos = holder.getLayoutPosition();                    mOnItemClickLitener.onItemClick(holder.itemView, pos);                }            });        }    }    @Override    public int getItemCount() {        return ad5.size();    }}class MyViewHolder extends RecyclerView.ViewHolder{    TextView tv;    ImageView imageView;    // public ImageView imageView1;    public MyViewHolder(View view)    {        super(view);        tv = (TextView) view.findViewById(R.id.home_text);        imageView=(ImageView) view.findViewById(R.id.home_img);        //imageView1=(ImageView) view.findViewById(R.id.home1_img);    }}

Home_threeAdpater

 
public class Home_threeAdpater  extends RecyclerView.Adapter<MyViewHolder1> {    List<HomeBean.DataBean.ActivityInfoBean.ActivityInfoListBean> data1;            Context mcontext1;    public Home_threeAdpater(List<HomeBean.DataBean.ActivityInfoBean.ActivityInfoListBean> data1, Context mcontext1) {        this.data1 = data1;        this.mcontext1 = mcontext1;    }    //条目点击    private OnItemClickLitener mOnItemClickLitener;    public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener)    {        this.mOnItemClickLitener = mOnItemClickLitener;    }    @Override    public MyViewHolder1 onCreateViewHolder(ViewGroup parent, int viewType) {    MyViewHolder1 holder1=null;        holder1 = new MyViewHolder1(LayoutInflater.from(                mcontext1).inflate(R.layout.item_home1, parent,                false));        return holder1;    }    @Override    public void onBindViewHolder(MyViewHolder1 holder, int position) {        // holder.tv.setText(ad5.get(position).getTitle());        //ImageLoader imageLoader=ImageLoader.getInstance();        ImageLoader.getInstance().displayImage(data1.get(position).getActivityImg(),holder.imageView1);    }    @Override    public int getItemCount() {        return data1.size();    }}class MyViewHolder1 extends RecyclerView.ViewHolder{    ImageView imageView1;    public MyViewHolder1(View view)    {        super(view);        // tv = (TextView) view.findViewById(R.id.home_text);        //imageView=(ImageView) view.findViewById(R.id.home_img);        imageView1=(ImageView) view.findViewById(R.id.home1_img);    }}

Home_fourAdpater

public class Home_fourAdpater extends RecyclerView.Adapter<MyViewHolder2> {    List<HomeBean.DataBean.SubjectsBean.GoodsListBeanX> goods;    Context mcontext2;    public Home_fourAdpater(List<HomeBean.DataBean.SubjectsBean.GoodsListBeanX> goods, Context mcontext2) {        this.goods = goods;        this.mcontext2 = mcontext2;    }    //条目点击    private OnItemClickLitener mOnItemClickLitener;    public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener)    {        this.mOnItemClickLitener = mOnItemClickLitener;    }    @Override    public MyViewHolder2 onCreateViewHolder(ViewGroup parent, int viewType) {    MyViewHolder2    holder2=null;        holder2 = new MyViewHolder2(LayoutInflater.from(                mcontext2).inflate(R.layout.item_home2, parent,                false));        return holder2;    }    @Override    public void onBindViewHolder(MyViewHolder2 holder, int position) {        // holder.tv.setText(ad5.get(position).getTitle());        //ImageLoader imageLoader=ImageLoader.getInstance();        holder.textView1.setText(goods.get(position).getGoods_name());        ImageLoader.getInstance().displayImage(goods.get(position).getGoods_img(),holder.imageView2);        // 如果设置了回调,则设置点击事件       /* if (mOnItemClickLitener != null)        {            holder2.itemView.setOnClickListener(new View.OnClickListener()            {                @Override                public void onClick(View v)                {                    int pos = holder2.getLayoutPosition();                    mOnItemClickLitener.onItemClick(holder2.itemView, pos);                }            });        }*/    }    @Override    public int getItemCount() {        return goods.size();    }}class MyViewHolder2 extends RecyclerView.ViewHolder{    TextView textView1;    ImageView imageView2;    public MyViewHolder2(View view)    {        super(view);        textView1 = (TextView) view.findViewById(R.id.item_home2_text);        //imageView=(ImageView) view.findViewById(R.id.home_img);        imageView2=(ImageView) view.findViewById(R.id.item_home2_img);    }}

Home_fiveAdpater

public class Home_fiveAdpater extends RecyclerView.Adapter<Home_fiveAdpater.MyViewHolder3>{    List<HomeBean.DataBean.SubjectsBean.GoodsRelationListBean> goods2;    Context mcontext3;    MyViewHolder3 holder3=null;    public Home_fiveAdpater(List<HomeBean.DataBean.SubjectsBean.GoodsRelationListBean> goods2, Context mcontext3) {        this.goods2 = goods2;        this.mcontext3 = mcontext3;    }    //条目点击    private OnItemClickLitener mOnItemClickLitener;    public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener)    {        this.mOnItemClickLitener = mOnItemClickLitener;    }    @Override    public MyViewHolder3 onCreateViewHolder(ViewGroup parent, int viewType) {        holder3 = new MyViewHolder3(LayoutInflater.from(                mcontext3).inflate(R.layout.item_home3, parent,                false));        return holder3;    }    @Override    public void onBindViewHolder(MyViewHolder3 holder, int position) {        holder3.tv3.setText(goods2.get(position).getDescription());        ImageLoader.getInstance().displayImage(goods2.get(position).getGoodsImage(),holder3.home3);        // 如果设置了回调,则设置点击事件        if (mOnItemClickLitener != null)        {            holder.itemView.setOnClickListener(new View.OnClickListener()            {                @Override                public void onClick(View v)                {                    int pos = holder3.getLayoutPosition();                    mOnItemClickLitener.onItemClick(holder3.itemView, pos);                }            });        }    }    @Override    public int getItemCount() {        return goods2.size();    }    class MyViewHolder3 extends RecyclerView.ViewHolder {        TextView tv3;        ImageView home3;        public MyViewHolder3(View view) {            super(view);            tv3 = (TextView) view.findViewById(R.id.home3_text);            home3=(ImageView) view.findViewById(R.id.home3_img);        }    }}