在Android的开发过程中数据的展示是非常普遍的,从一开始的LIstView到RecyclerView一直都是我们最长用到的控件,而这些列表的数据的不是固定死的,而且为了不让App加载数据的速度太慢用户等太久,所以一般都会使用分页加载,当用户想查看跟多的时候,可以自行上拉加载更多,这样可以减少加载数据的时间同时可以让用户不需要浪费流量去加载他不需要的数据。所以光知道展示数据还不行,还要分类加载数据。

在LIstView和RecyclerView的上拉加载使用会比较麻烦,而XRecyclerView非常方便的决解了这些问题,都已经封装好了,我们只需要调用方法就OK了。下面是XRecyclerView的使用。

1.配置build.gradle文件:

直接添加

       compile 'com.jcodecraeer:xrecyclerview:1.3.2'   即可。
    2.在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_xreca"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
><com.jcodecraeer.xrecyclerview.XRecyclerView
        android:layout_width="match_parent"
        android:id="@+id/xre_xrv"
        android:layout_height="match_parent"></com.jcodecraeer.xrecyclerview.XRecyclerView></RelativeLayout>
 
在xml中的使用只需要配置它的id,长宽就好了。
    
      3.在JAVJ文件中的使用
public class XrecyclerviewActivity extends AppCompatActivity {private XRecyclerView recyclerView;private Context context;//数据集合
    private List<String >list=new ArrayList<>();//获取数据的开始
    private int curr;private MyAdapter adapter;@Override
    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_xreca);getSupportActionBar().hide();context=this;recyclerView=(XRecyclerView)findViewById(R.id.xre_xrv);//LinearLayoutManager是线性布局,setOrientation可以设置他的方向是横向还是纵向。
        LinearLayoutManager layoutManager=new LinearLayoutManager(context);layoutManager.setOrientation(LinearLayoutManager.VERTICAL);recyclerView.setLayoutManager(layoutManager);//GridLayoutManager是表格布局,GridLayoutManagerContext,表格的个数(根据方向决定横排几个或纵排几个))
//        GridLayoutManager layoutManager1=new GridLayoutManager(context,3);
//        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
//        recyclerView.setLayoutManager(layoutManager1);


        //StaggeredGridLayoutManager是瀑布流,StaggeredGridLayoutManager(横或纵排个数,方向)
//        StaggeredGridLayoutManager staggeredGridLayoutManager=new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
//        recyclerView.setLayoutManager(staggeredGridLayoutManager);


        //XRecyclerView的上下拉监听方法
        recyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {@Override
            //下拉刷新
            public void onRefresh() {//当下拉刷新的时候,重新获取数据,所有curr要变回0,并且把集合list清空
                curr=0;list.clear();getData(curr);recyclerView.refreshComplete();}@Override
            //上拉加载
            public void onLoadMore() {//当上拉加载的时候,因为一次获取是10个数据,所也在获取的时候就要在加10的地方开始获取
//                如:第一次0——9//                    第二次10——19//                SystemClock.sleep(1000);
                curr=curr+10;getData(curr);recyclerView.refreshComplete();}});//第一次获取数据
        curr=0;getData(curr);}private void getData(int number){for (int i=number;i<number+10;i++){list.add("数据是第"+i+"");}//调用Adapter展示数据,这个判断是为了不重复创建MyAdapter的对象
        if (adapter==null){adapter=new MyAdapter(list,context);recyclerView.setAdapter(adapter);}else {adapter.notifyDataSetChanged();}}private  class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{private List<String >list=new ArrayList<>();private Context context;public MyAdapter(List<String> list, Context context) {this.list = list;this.context = context;}@Override
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {//Adapter添加布局,bq把这个view传递给HoldView,让HoldView找到空间
            View view= LayoutInflater.from(context).inflate(R.layout.xrecyc_adapter, parent,false);HoldView holdView=new HoldView(view);return holdView;}@Override
        public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {//positionAdapter的位置,数据从list里面可以拿出来。
            String s=list.get(position);((HoldView)holder).textView.setText(s);}@Override
        public int getItemCount() {return list.size();}private class HoldView extends RecyclerView.ViewHolder{private TextView textView;public HoldView(View itemView) {super(itemView);//根据onCreateViewHolderHoldView所添加的xml布局找到空间
                textView= (TextView) itemView.findViewById(R.id.xrecyc_text);}}}
}

XRecyclerView上下拉使用相关推荐

  1. XRecyclerView上下拉加载刷新

    1.配置build.gradle文件: 直接添加 compile 'com.jcodecraeer:xrecyclerview:1.3.2' 即可. 2.在xml文件的使用: <?xml ver ...

  2. TabLayout+ViewPager无限轮播加小圆点,XRecyclerView下拉刷新,加载更多

    效果图 要导入的依赖 compile files('libs/okhttp-3.9.0.jar')     compile files('libs/okio-1.13.0.jar')     comp ...

  3. XRecyclerView、Okhttp

    XRecyclerView 上拉加载.下滑刷新 依赖 bean类 布局文件 适配器代码 activity实现 上拉加载.下滑刷新 依赖 //XRecyclerViewapi('com.jcodecra ...

  4. Android 开源项目及网址

    网站: Github:https://github.com/Trinea/android-open-project 泡在网上的日子:http://www.jcodecraeer.com/ 掘金:htt ...

  5. mvp实现Xrecyclerview的上下拉和购物车功能(仿淘宝)

    首先先导入我们要使用的依赖 implementation 'com.android.support:design:28.0.0'implementation 'com.google.code.gson ...

  6. mvp实现Xrecyclerview的上下拉和购物车功能(仿饿了么)

    首先先导入咱们的依赖 implementation 'com.android.support:design:28.0.0'implementation 'com.google.code.gson:gs ...

  7. RecyclerView的下拉刷新和加载更多 动画

    下拉刷新和加载更多 1.https://github.com/jianghejie/XRecyclerView 2.http://blog.csdn.net/jabony/article/detail ...

  8. RecyclerView 下拉刷新上拉加载

    步骤: 首先直接定义一个XRecyclerView继承RecyclerView,重写他的三个构造方法. init(Context mContext)方法用来初始化底部加载的view 回到XRecycl ...

  9. mvc+xrecyclerview+SQL+自定义控件

    效果图 第二个页面 代码: 主页面 package com.example.yk_lx1;import android.animation.Animator; import android.anima ...

最新文章

  1. 字符串截取固定长度的方法
  2. LeetCode实战:最长公共前缀
  3. MyBatis接口的简单实现原理
  4. html安装网卡驱动,如何手动安装无线网卡驱动,网卡驱动安装教程
  5. [云炬创业基础笔记]第二章创业者测试10
  6. 云笔记/笔记软件工具
  7. linux来源usb驱动在哪下载,Linux USB驱动程序基础
  8. matlab有趣表白程序_小人表白MATLAB代码
  9. 物联网核心安全系列——智能门锁安全问题
  10. Java中null和浮点数相乘_jvm规范之浮点数 - 你知道吗,有个数字它和自身不相等...
  11. windows环境下sqlmap安装教程及问题详解
  12. python http通信接口开发
  13. CKEditor配置及使用
  14. 性能测试-性能测试结果分析
  15. Linux如何用link命令停网卡,如何使用 ethtool 命令管理以太网卡 | Linux 中国
  16. 电脑远程桌面怎么关闭计算机,远程控制电脑怎么关闭
  17. 2015年腾讯阿里实习生招聘面试经历
  18. 如何修改报表平台中数据决策系统登陆地址
  19. Notability for Mac(笔记软件)
  20. 国家信息安全水平考试NISP一级模拟题(02)

热门文章

  1. 15 WMI 中WIN32类库名
  2. Python函数实现“学生管理系统”案例
  3. 第1章 数据库系统与SQL基础知识!什么是SQL数据库系统?SQL类型?
  4. 7y30 matlab 怎么样,GPD Pocket 2代7寸电脑用的酷睿M3-7y30什么水平?能超过i5吗?
  5. 迪杰斯特拉算法——最短路径
  6. 可靠信号与不可靠信号
  7. 2021-5-7 NTD第二阶段第四天
  8. 【Xilinx AX7103 MicroBalze学习笔记6】MicroBlaze 自定义 IP 核封装实验
  9. Python!渡我!
  10. ssoj1018地下组织