当前位置: 移动技术网 > IT编程>移动开发>Android > Android XRecyclerView实现多条目加载

Android XRecyclerView实现多条目加载

2019年07月24日  | 移动技术网IT编程  | 我要评论

林志玲陪老总睡图,国模薛婧,深圳保利国际影城

本文实例为大家分享了android实现多条目加载展示的具体代码,供大家参考,具体内容如下

展示效果

这里写图片描述

依赖

testcompile 'junit:junit:4.12'
 compile 'com.hjm:bottomtabbar:1.1.1'
 compile 'com.android.support:design:23.4.0'
 compile 'com.android.support:mediarouter-v7:25.0.0'
 compile 'com.android.support:appcompat-v7:25.0.0'
 compile 'com.android.support:recyclerview-v7:25.0.0'
 compile 'com.jcodecraeer:xrecyclerview:1.3.2'
 compile 'com.squareup.okio:okio:1.5.0'
 compile 'com.squareup.okhttp3:okhttp:3.2.0'
 compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
 compile files('libs/gson-2.3.1.jar')
 compile files('libs/universal-image-loader-1.9.3.jar')
 compile 'com.youth.banner:banner:1.4.9'
 compile 'com.github.bumptech.glide:glide:3.7.0'

添加配置

<uses-permission android:name="android.permission.internet" />
 <uses-permission android:name="android.permission.read_external_storage" />
 <uses-permission android:name="android.permission.write_external_storage" />
 <uses-permission android:name="android.permission.access_network_state" />
 <uses-permission android:name="android.permission.write_external_storage" />
 <uses-permission android:name="android.permission.read_external_storage" />
 <uses-permission android:name="android.permission.access_network_state" />
 <uses-permission android:name="android.permission.access_wifi_state" />
 <uses-permission android:name="android.permission.read_phone_state" />
 <uses-permission android:name="android.permission.camera" />
 <uses-permission android:name="android.permission.vibrate" />

代码区

zhuyeactivity(首页布局含tablayout)

public class zhuyeactivity extends appcompatactivity {
 private viewpager viewpager;
 private tablayout tablayout;
 private fragmentadapter adapter;
 private list<fragment> fragments;
 @override
 protected void oncreate(bundle savedinstancestate) {
  super.oncreate(savedinstancestate);
  setcontentview(r.layout.activity_zhuye);
  viewpager=(viewpager)findviewbyid(r.id.viewpager);
  tablayout=(tablayout)findviewbyid(r.id.tablayout);
  fragments=new arraylist<fragment>();
  onefragment onefragment = new onefragment();
  twofragment twofragment = new twofragment();
  threefragment threefragment = new threefragment();
  fourfragment fourfragment = new fourfragment();
  fragments.add(onefragment);
  fragments.add(twofragment);
  fragments.add(threefragment);
  fragments.add(fourfragment);
  adapter = new fragmentadapter(getsupportfragmentmanager(),fragments);
  viewpager.setadapter(adapter);
  tablayout.setupwithviewpager(viewpager);
 }
}

activity_zhuye(首页布局xml文件)

<?xml version="1.0" encoding="utf-8"?>
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/activity_zhuye"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context="test.bwie.com.ykmn.zhuyeactivity">
 <relativelayout
  android:id="@+id/app_top"
  android:layout_width="match_parent"
  android:layout_height="50dp"
  android:background="@color/colorprimarydark"
  >
  <textview
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="首页"
   android:textsize="25dp"
   android:textcolor="@color/colorbai"
   android:layout_centerinparent="true"
   />
 </relativelayout>
 <android.support.design.widget.tablayout
  android:layout_width="match_parent"
  android:layout_height="40dp"
  android:id="@+id/tablayout"
  android:layout_below="@id/app_top"
  >
 </android.support.design.widget.tablayout>

 <android.support.v4.view.viewpager
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:id="@+id/viewpager"
  android:layout_below="@id/tablayout"
  />
</relativelayout>

onefragment(首页以第一个fragment 里面的api是自行供应的接口)

public class onefragment extends fragment {
 private xrecyclerview xr;
 private list<string> list = new arraylist<>();
 //获取数据的开始
 private int curr;
 private xradapter adapter;
 @nullable
 @override
 public view oncreateview(layoutinflater inflater, @nullable viewgroup container, @nullable bundle savedinstancestate) {
  view view = inflater.inflate(r.layout.y1, null, false);
  //初始化xr控件
  xr=(xrecyclerview)view.findviewbyid(r.id.xre_xrv);

  //加布局管理器
  linearlayoutmanager layoutmanager = new linearlayoutmanager(getactivity());
  layoutmanager.setorientation(linearlayoutmanager.vertical);
  xr.setlayoutmanager(layoutmanager);

  getdata(api.type_home,1);
  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();*/
//    xr.loadmorecomplete();
   }
  });
  return view;
 }
 private void getdata(string url,int curr){
  okhttp3utils.getinstance().doget(url, new gsonobjectcallback<mygsonfr>() {
   @override
   public void onui(mygsonfr mygsonfr) {
    xradapter mxradapter=new xradapter(getactivity(),mygsonfr.gettop_stories());
    xr.setadapter(mxradapter);
   }

   @override
   public void onfailed(call call, ioexception e) {

   }
  });
 }
}

y1(onefragment的布局代码xml)

<?xml version="1.0" encoding="utf-8"?>
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 >
 <com.jcodecraeer.xrecyclerview.xrecyclerview
  android:id="@+id/xre_xrv"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  >
 </com.jcodecraeer.xrecyclerview.xrecyclerview>
</relativelayout>

xradapter(适配器对条目)

public class xradapter extends recyclerview.adapter<recyclerview.viewholder> {
 list<mygsonfr.topstoriesbean> lists;
 context mcontext;
 arraylist mlist;
 private enum item_type{
  typeone,typetwo,typethree,typefour,typefive,typesix,typeseven;
 }
 //创建适配器有参构造


 public xradapter(context mcontext, list<mygsonfr.topstoriesbean> data) {
  this.lists = data;
  this.mcontext = mcontext;
 }

 @override
 public recyclerview.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 mview = layoutinflater.from(mcontext).inflate(r.layout.recycle_item_b, null);
   viewholderb viewholder = new viewholderb(mview);
   return viewholder;
  }
  return null;
 }

 @override
 public void onbindviewholder(recyclerview.viewholder holder, int position) {
  if (holder instanceof viewholdera){
   mlist=new arraylist();
   for (int i=0;i<lists.size();i++){
    mlist.add(lists.get(i).getimage());
   }
   //设置图片加载器
   ((viewholdera)holder).mbanner.setimageloader(new glideimageloader());
   ((viewholdera)holder).mbanner.setimages(mlist);
   ((viewholdera)holder).mbanner.start();
  }else if(holder instanceof viewholderb){
   mlist=new arraylist();
   for (int i=0;i<lists.size();i++){
    mlist.add(lists.get(i).getimage());
   }
   ((viewholderb)holder).re.setlayoutmanager(new linearlayoutmanager(mcontext));
   ((viewholderb)holder).re.setadapter(new viewholderba(lists,mcontext));
  }
 }

 @override
 public int getitemcount() {
  return 2;
 }

 @override
 public int getitemviewtype(int position) {
  if(position==0){
   return item_type.typeone.ordinal();
  }else if(position==1){
   return item_type.typetwo.ordinal();
  }
  return -1;
 }
 class viewholdera extends recyclerview.viewholder{
  private banner mbanner;
  public viewholdera(view itemview) {
   super(itemview);
   mbanner=(banner)itemview.findviewbyid(r.id.mybanner);
  }
 }
 class viewholderb extends recyclerview.viewholder{
  private recyclerview re;
  public viewholderb(view itemview) {
   super(itemview);
   re = (recyclerview) itemview.findviewbyid(r.id.id_recyclerview);
  }
 }
}

recycle_item_a(banner轮播xml)

<?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_a(recyclerview布局xml)

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 android:layout_width="match_parent"
 android:orientation="vertical"
 android:layout_height="match_parent">
 <android.support.v7.widget.recyclerview
  android:id="@+id/id_recyclerview"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  />
</linearlayout>

viewholderba(recyclerview小适配器)

public class viewholderba extends recyclerview.adapter<viewholderba.myviewholder>{

 list<mygsonfr.topstoriesbean> lists;
 context mc;

 public viewholderba(list<mygsonfr.topstoriesbean> lists, context mc) {
 this.lists = lists;
 this.mc = mc;
 }

 @override
 public myviewholder oncreateviewholder(viewgroup parent, int viewtype) {
 myviewholder holder = new myviewholder(layoutinflater.from(mc).inflate(r.layout.item_home, parent, false));
 return holder;
 }

 @override
 public void onbindviewholder(myviewholder holder, int position) {
 holder.tv.settext(lists.get(position).gettitle());
 imageloader instance = imageloader.getinstance();
 instance.displayimage(lists.get(position).getimage(),holder.img);
 }

 @override
 public int getitemcount() {
 return lists.size();
 }

 class myviewholder extends recyclerview.viewholder {

 textview tv;
 imageview img;

 public myviewholder(view view) {
  super(view);
  tv = (textview) view.findviewbyid(r.id.text_a1);
  img = (imageview) view.findviewbyid(r.id.img_a1);
 }
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网