Android XRecyclerView实现多条目加载
程序员文章站
2023-12-09 19:52:03
本文实例为大家分享了android实现多条目加载展示的具体代码,供大家参考,具体内容如下
展示效果
这里写图片描述
依赖
testcompile 'juni...
本文实例为大家分享了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); } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。