RecyclerView多条目加载(网络请求数据)
2017-10-25 20:54
639 查看
RecyclerView多条目加载和ListView的多条目加载用法是一样的,代码如下:
1.导入RecyclerView或XRecyclerView的依赖包(自己按照需求导入依赖包,下面RecyclerView可以替换成XRecyclerView)XRecyclerView可以实现上拉加载,下拉刷新,而RecyclerView不可以
2.xml的布局文件
3.自己定义多条目的布局
二、Adapter(复杂的)
//加载轮播图图片
1.导入RecyclerView或XRecyclerView的依赖包(自己按照需求导入依赖包,下面RecyclerView可以替换成XRecyclerView)XRecyclerView可以实现上拉加载,下拉刷新,而RecyclerView不可以
//Recyclerview compile 'com.android.support:recyclerview-v7:22.1.1' compile 'com.android.support:appcompat-v7:22.1.1'
2.xml的布局文件
<android.support.v7.widget.RecyclerView android:id="@+id/id_recyclerview" android:divider="#ffff0000" android:dividerHeight="10dp" android:layout_width="match_parent" android:layout_height="match_parent" />
3.自己定义多条目的布局
一、Adapter(简单的多条目)
public class ThreeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private final int TYPRONE = 1; private final int TYPETWO = 2; Context context; MusicBean bean; ArrayList<MusicBean.SongListBean> list; ArrayList<MusicBean.SongListBean> list1; public ThreeAdapter(Context context, MusicBean bean) { this.context = context; this.bean = bean; } @Override public int getItemViewType(int position) { if(position%2==0){ return TYPRONE; } else if(position%2==1){ return TYPETWO; } else { return super.getItemViewType(position); } } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if(viewType==TYPRONE){ View view = LayoutInflater.from(context).inflate(R.layout.three_item_one, null); ViewHolderA viewHolderA = new ViewHolderA(view); return viewHolderA; }else if(viewType==TYPETWO){ View view = LayoutInflater.from(context).inflate(R.layout.three_item_two, null); ViewHolderB viewHolderB = new ViewHolderB(view); return viewHolderB; } return null; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if(holder instanceof ViewHolderA){ list1=new ArrayList<>(); for(int i=0;i<bean.getSong_list().size();i++){ list1.add(new MusicBean.SongListBean(bean.getSong_list().get(position).getPic_small(),bean.getSong_list().get(position).getTitle())); } ImageLoader.getInstance().displayImage(list1.get(position).getPic_small(),((ViewHolderA) holder).img); }else if(holder instanceof ViewHolderB){ list=new ArrayList<>(); for(int i=0;i<bean.getSong_list().size();i++){ list.add(new MusicBean.SongListBean(bean.getSong_list().get(position).getPic_small(),bean.getSong_list().get(position).getTitle())); } ((ViewHolderB) holder).text.setText(list.get(position).getTitle()); } } @Override public int getItemCount() { return bean.getSong_list().size(); } class ViewHolderA extends RecyclerView.ViewHolder{ ImageView img; public ViewHolderA(View itemView) { super(itemView); img= (ImageView) itemView.findViewById(R.id.item_img); } } class ViewHolderB extends RecyclerView.ViewHolder{ TextView text; public ViewHolderB(View itemView) { super(itemView); text= (TextView) itemView.findViewById(R.id.item_text); } }
MainActivity(简单的)
RecyclerView re_three; ArrayList<MusicBean.SongListBean> songs; private String position; ThreeAdapter adapter; String url; String url2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_three); re_three= (RecyclerView) findViewById(R.id.re_three); url="http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.billboard.billList&type=1&size=1
&offset=0";position = getIntent().getStringExtra("position"); getData();}public void getData() { OkHttp3Utils.getInstance().doGet(url, new GsonObjectCallback<MusicBean>() { @Override public void onUi(MusicBean musicBean) { musicBean.getSong_list(); //Log.d("main2",musicBean.getSong_list().get(0).getAlbum_title()+"---"); adapter=new ThreeAdapter(ThreeActivity.this,musicBean); re_three.setLayoutManager(new LinearLayoutManager(ThreeActivity.this)); re_three.setAdapter(adapter); adapter.notifyDataSetChanged(); } @Override public void onFailed(Call call, IOException e) { } });}
二、Adapter(复杂的)
Home_goods.DataBean list; Context mcontext; ArrayList mlist; ArrayList mlist2; ArrayList imgs_gwc; ArrayList<Home_goods.DataBean.SubjectsBean.GoodsListBeanX> goodslist; private Intent intent; //枚举类型 private enum Item_Type{ Typeone ,Typetwo,Typethree,Typefour,Typefive,Typesix; } public XRAdapter(Context mcontext, Home_goods.DataBean list) { this.mcontext = mcontext; this.list = list; intent = new Intent(mcontext, HomeWebActivity.class); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == Item_Type.Typeone.ordinal()) { View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycler_item_one, null); ViewHolderA viewHolder = new ViewHolderA(mView); return viewHolder; } else if (viewType == Item_Type.Typetwo.ordinal()) { View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycler_item_two, null); ViewHolderB viewHolder = new ViewHolderB(mView); return viewHolder; } else if (viewType == Item_Type.Typethree.ordinal()) { View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycler_item_three, null); ViewHolderC viewHolder = new ViewHolderC(mView); return viewHolder; }else if (viewType == Item_Type.Typefour.ordinal()) { View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycler_item_four, null); ViewHolderD viewHolder = new ViewHolderD(mView); return viewHolder; }else if (viewType == Item_Type.Typefive.ordinal()) { View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycler_item_five, null); ViewHolderE viewHolder = new ViewHolderE(mView); return viewHolder; }else if (viewType == Item_Type.Typesix.ordinal()) { View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycler_item_six, null); ViewHolderF viewHolder = new ViewHolderF(mView); return viewHolder; } return null; } @Override public void onBindViewHolder(final RecyclerView.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(); ((ViewHolderA) holder).mbanner.setOnBannerClickListener(new OnBannerClickListener() { @Override public void OnBannerClick(int position) { String data = list.getAd1().get(position-1).getAd_type_dynamic_data(); intent.putExtra("url",data); mcontext.startActivity(intent); Toast.makeText(mcontext,data,Toast.LENGTH_SHORT).show(); } }); } else if (holder instanceof ViewHolderB) { // ((ViewHolderB) holder).text.setText(list.getDefaultGoodsList().get(position).getGoods_name() + "------样式二"); ((ViewHolderB) holder).t1.setText(list.getAd5().get(0).getTitle()); ((ViewHolderB) holder).t2.setText(list.getAd5().get(1).getTitle()); ((ViewHolderB) holder).t3.setText(list.getAd5().get(2).getTitle()); ((ViewHolderB) holder).t4.setText(list.getAd5().get(3).getTitle()); ImageLoader.getInstance().displayImage(list.getAd5().get(0).getImage(),((ViewHolderB) holder).img1); ImageLoader.getInstance().displayImage(list.getAd5().get(1).getImage(),((ViewHolderB) holder).img2); ImageLoader.getInstance().displayImage(list.getAd5().get(2).getImage(),((ViewHolderB) holder).img3); ImageLoader.getInstance().displayImage(list.getAd5().get(3).getImage(),((ViewHolderB) holder).img4); } else if (holder instanceof ViewHolderC) { // ((ViewHolderC) holder).text.setText(list.getDefaultGoodsList().get(position).getGoods_name()+ "------样式三"); }else if (holder instanceof ViewHolderD) { imgs_gwc=new ArrayList(); for(int i=0;i<list.getActivityInfo().getActivityInfoList().size();i++){ imgs_gwc.add(list.getActivityInfo().getActivityInfoList().get(i).getActivityImg()); } ((ViewHolderD) holder).re2.setLayoutManager(new StaggeredGridLayoutManager(1,StaggeredGridLayoutManager.HORIZONTAL)); ((ViewHolderD) holder).re2.setAdapter(new MyAdapter_gwc(imgs_gwc,mcontext)); }else if (holder instanceof ViewHolderE) { mlist2=new ArrayList(); for(int i=0;i<list.getSubjects().size();i++){ mlist2.add(list.getSubjects().get(i).getImage()); } //设置图片加载器 ((ViewHolderE) holder).banner2.setImageLoader(new GlideImageLoader()); ((ViewHolderE) holder).banner2.setImages(mlist2); ((ViewHolderE) holder).banner2.start(); ((ViewHolderE) holder).banner2.setOnBannerClickListener(new OnBannerClickListener() { @Override public void OnBannerClick(int position) { String wapUrl = list.getSubjects().get(position).getWapUrl(); intent.putExtra("url",wapUrl); mcontext.startActivity(intent); } }); }else if (holder instanceof ViewHolderF) { goodslist=new ArrayList(); for(int i=0;i<list.getDefaultGoodsList().size();i++){ String goods_name = list.getDefaultGoodsList().get(i).getGoods_name(); String goods_img = list.getDefaultGoodsList().get(i).getGoods_img(); goodslist.add(new Home_goods.DataBean.SubjectsBean.GoodsListBeanX(goods_name,goods_img)); } ((ViewHolderF) holder).re3.setLayoutManager(new StaggeredGridLayoutManager(1,StaggeredGridLayoutManager.HORIZONTAL)); ((ViewHolderF) holder).re3.setAdapter(new MyAdapter_goods(mcontext,goodslist)); } } @Override public int getItemCount() { return 6; } //返回值赋值给onCreateViewHolder的参数 viewType @Override public int getItemViewType(int position) { // return super.getItemViewType(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 RecyclerView.ViewHolder { public Banner mbanner; public ViewHolderA(View itemView) { super(itemView); mbanner = (Banner) itemView.findViewById(R.id.banner); } } class ViewHolderB extends RecyclerView.ViewHolder { public TextView t1; public TextView t2; public TextView t3; public TextView t4; public ImageView img1; public ImageView img2; public ImageView img3; public ImageView img4; public ViewHolderB(View itemView) { super(itemView); t1= (TextView) itemView.findViewById(R.id.id_num1); t2= (TextView) itemView.findViewById(R.id.id_num2); t3= (TextView) itemView.findViewById(R.id.id_num3); t4= (TextView) itemView.findViewById(R.id.id_num4); img1= (ImageView) itemView.findViewById(R.id.id_image1); img2= (ImageView) itemView.findViewById(R.id.id_image2); img3= (ImageView) itemView.findViewById(R.id.id_image3); img4= (ImageView) itemView.findViewById(R.id.id_image4); } } class ViewHolderC extends RecyclerView.ViewHolder { public ViewHolderC(View itemView) { super(itemView); } } class ViewHolderD extends RecyclerView.ViewHolder { public RecyclerView re2; public ViewHolderD(View itemView) { super(itemView); re2= (RecyclerView) itemView.findViewById(R.id.id_recyclerview2); } } class ViewHolderE extends RecyclerView.ViewHolder { public Banner banner2; public ViewHolderE(View itemView) { super(itemView); banner2= (Banner) itemView.findViewById(R.id.banner2); } } class ViewHolderF extends RecyclerView.ViewHolder { public RecyclerView re3; public ViewHolderF(View itemView) { super(itemView); re3= (RecyclerView) itemView.findViewById(R.id.id_recyclerview_bottom); } }
MainActivity
//新加的 xr= (XRecyclerView)view.findViewById(R.id.xre_xrv); //加布局管理器 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(path_url,curr); xr.refreshComplete(); } @Override public void onLoadMore() { curr++; getData(path_url,curr); xr.refreshComplete(); } }); getData(path_url,1); return view; } //初始化数据 private void getData(String url,int curr){ OkHttp3Utils.getInstance().doGet(url, new GsonObjectCallback<Home_goods>() { @Override public void onUi(Home_goods homeBean) { homeBean.getMsg(); mxradapter = new XRAdapter(getActivity(),homeBean.getData()); xr.setAdapter(mxradapter); } @Override public void onFailed(Call call, IOException e) { } });
//加载轮播图图片
GlideImageLoader
public class GlideImageLoader extends ImageLoader { @Override public void displayImage(Context context, Object path, ImageView imageView) { Glide.with(context).load(path).into(imageView); } }
相关文章推荐
- OkHttp的网络请求数据和RecyclerView的多条目加载,添加分割线
- MVP框架+RXJava+reftorfit请求网络数据+XRecycleView多条目展示(banner轮播+条目展示、刷新加载)、点击事件+fresco图片加载
- XRecyclerView的多条目请求数据,可以实现上拉加载下拉刷新
- MVP模式的OKhttp请求网络数据,xrecyclerview上拉刷新,下拉加载
- MVP实现用Retrofit请求网络数据Fresco加载图片,Recyclerview CheckBox显示并实现全选删除
- RecyclerView条目跳转+SpringView数据刷新加载+MVP+OKhttp+拦截器+自定义view 实现请求网络数据的二级列表购物车
- MVP+Retrofit+RxJava请求网络数据实现RecyclerView多条目展示
- RecyclerView和okhttp结合 实现一个网络请求数据
- 调用OKhttp封装类请求网络数据适配到Recyclerview上拉下拉刷新
- 使用MVP注册登录模块+封装的OKhttp,拦截器+QQ第三方登录+RecyclerView+SpringView上拉加载下拉刷新网络数据
- XlistView 加载头部ViewPager 网络请求数据 存入数据库
- 使用recyclerview多条目加载代替listview okhttp请求网路 Glide加载图片
- fresco加载图片+EventBus Activity之间跳转传值+GreenDAo数据库+retrofit请求数据+recyclerview展示数据+ButterKnife找控件
- viewPaper+Fragment的布局,在初始化时会导致fragment的布局加载和网络请求数据(懒加载)
- recyclerview+okhttp+glide实现网络请求加载图片列表
- Android---RecyclerView网络请求图片加载
- 使用MVP,OKHttp封装类及其拦截器,RecyclerView,SpringView,ImageLoader实现数据的多条目加载
- SSS___listview多条目加载、使用okhttp请求网络数据,Glide加载图片
- MVP架构分包+OkHttp网络请求+RecyclerView展示数据
- MVP架构分包+OkHttp网络请求数据并展示到xrecyclerview上