Android XRecyclerView实现多条目加载
时间:2019-04-07
本文章向大家介绍Android XRecyclerView实现多条目加载,主要包括Android XRecyclerView实现多条目加载使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本文实例为大家分享了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); } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
- ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
- Java程序员的日常 —— static的用法讲解实践
- WSAEventSelect模型 ---应用实例,重写TCP服务器实例
- Mysql-13mysql的复制
- 蓝牙门禁系统
- Java程序员的日常 —— 工作一天的收获
- Mysql-12-mysql的备份和恢复
- WSAEventSelect模型
- 事件分发机制学习
- Java程序员的日常—— 《编程思想》关于类的使用常识
- Mysql-7-mysql函数
- WSAAsyncSelect模型
- [收藏]IntelliJ Idea快捷键
- 近期不少拼音域名结拍,kuaishi.com拍出19.9万元
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Spring 中的属性赋值
- Spring 中控制 Bean 生命周期的几种方式及 BeanPostProcessor 执行原理
- Spring 中的 @Import 注解及向容器中添加 Bean 的几种方式
- Spring 注解开发之 @Conditional
- JDBC 技术应用实践:网上书城后台管理系统
- 思科模拟器:路由器基本配置
- 思科模拟器:实验五——高级路由实验
- 从零开始重新认识 SpringMVC
- 字节跳动Android实习面试凉凉经,两轮面试我被完虐了...
- 高效、简单、方便管理与维护的开源运维工单系统
- python数据库入门编程。
- EasyExcel导出自定义合并单元格策略
- CMake学习笔记
- 性能分析(2)- 应用程序 CPU 使用率过高案例
- 性能测试必备知识(7)- 深入理解“CPU 使用率”