文档章节

android实现RecyclerView上拉加载,下拉更新(4)

moz1q1
 moz1q1
发布于 2016/01/08 15:19
字数 459
阅读 165
收藏 6
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/swipeRefreshLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <LinearLayout
                android:id="@+id/footer_linearlayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:gravity="center"
                android:orientation="horizontal"
                android:visibility="gone">

                <ProgressBar
                    android:id="@+id/load_more_pb"
                    style="@android:style/Widget.ProgressBar.Small"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginRight="10dp" />

                <TextView
                    android:id="@+id/load_more_tv"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:paddingBottom="10dp"
                    android:paddingTop="10dp"
                    android:text="正在加载..." />

            </LinearLayout>

            <android.support.v7.widget.RecyclerView
                android:id="@+id/recycler_view"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_above="@+id/footer_linearlayout" />

        </RelativeLayout>
    </android.support.v4.widget.SwipeRefreshLayout>
</LinearLayout>

例子在这里

package com.moziqi.pullloadmorerecyclerviewsample;


import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.wuxiaolong.pullloadmorerecyclerview.PullLoadMoreRecyclerView;

import java.util.ArrayList;
import java.util.List;


/**
 * A simple {@link Fragment} subclass.
 */
public class FristFragment extends Fragment {

    private PullLoadMoreRecyclerView mPullLoadMoreRecyclerView;
    private int mCount = 1;
    private RecyclerViewAdapter mRecyclerViewAdapter;
    private RecyclerViewAdapter2 mRecyclerViewAdapter2;


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_frist, container, false);
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        mPullLoadMoreRecyclerView = (PullLoadMoreRecyclerView) view.findViewById(R.id.pullLoadMoreRecyclerView);
        //mPullLoadMoreRecyclerView.setRefreshing(true);
        mPullLoadMoreRecyclerView.setLinearLayout();
        mPullLoadMoreRecyclerView.setOnPullLoadMoreListener(new PullLoadMoreListener());
        getData();
    }

    private void getData() {
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
//                if (mRecyclerViewAdapter == null) {
//                    mRecyclerViewAdapter = new RecyclerViewAdapter(getActivity(), setList());
//                    mPullLoadMoreRecyclerView.setAdapter(mRecyclerViewAdapter);
//                } else {
//                    mRecyclerViewAdapter.getDataList().addAll(setList());
//                    mRecyclerViewAdapter.notifyDataSetChanged();
//                }
                if (mRecyclerViewAdapter2 == null) {
                    mRecyclerViewAdapter2 = new RecyclerViewAdapter2(mPullLoadMoreRecyclerView.getRecyclerView(), setList(), R.layout.recycler_view_item);
                    mPullLoadMoreRecyclerView.setAdapter(mRecyclerViewAdapter2);
                } else {
                    mRecyclerViewAdapter2.getDataList().addAll(setList());
                    mRecyclerViewAdapter2.notifyDataSetChanged();
                }
                mPullLoadMoreRecyclerView.setPullLoadMoreCompleted();
            }
        }, 3000);
    }

    private List<String> setList() {
        List<String> dataList = new ArrayList<>();
        int start = 20 * (mCount - 1);
        for (int i = start; i < 20 * mCount; i++) {
            dataList.add("Frist" + i);
        }
        return dataList;

    }


    class PullLoadMoreListener implements PullLoadMoreRecyclerView.PullLoadMoreListener {
        @Override
        public void onRefresh() {
            setRefresh();
            getData();
        }

        @Override
        public void onLoadMore() {
            mCount = mCount + 1;
            getData();
        }
    }

    private void setRefresh() {
        mRecyclerViewAdapter2.getDataList().clear();
        mCount = 1;
    }
}
package com.moziqi.pullloadmorerecyclerviewsample;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.wuxiaolong.pullloadmorerecyclerview.BaseRecyclerAdapter;
import com.wuxiaolong.pullloadmorerecyclerview.RecyclerHolder;

import java.util.Collection;
import java.util.List;

/**
 * Created by moziqi.
 */
public class RecyclerViewAdapter2 extends BaseRecyclerAdapter<String> {


    public RecyclerViewAdapter2(RecyclerView v, Collection<String> datas, int itemLayoutId) {
        super(v, datas, itemLayoutId);
    }

    @Override
    public void convert(RecyclerHolder holder, String item, int position, boolean isScrolling) {
        holder.setText(R.id.title, item);
    }

//    @Override
//    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_view_item, parent, false);
//        return new ViewHolder(v);
//    }
//
//    @Override
//    public void onBindViewHolder(ViewHolder holder, final int position) {
//        holder.title.setText(dataList.get(position));
//    }
//
//    @Override
//    public int getItemCount() {
//        return dataList.size();
//    }

}

转载请表明来之这里http://my.oschina.net/moziqi/blog/308842

觉得这篇文章帮助到你了,你可以请我吃个糖。哈哈


© 著作权归作者所有

moz1q1
粉丝 55
博文 351
码字总数 117569
作品 0
东莞
程序员
私信 提问
android 常用第三方插件收藏

1、android-vertical-slide-view : 仿照淘宝和聚美优品,在商品详情页,向上拖动时,可以加载下一页。使用ViewDragHelper,滑动比较流畅。 2、Android-MaterialRefreshLayout :这是一个下拉...

ch10mmt
2018/06/26
0
0
Android开发过程中的坑及解决方法收录

  1.某个控件要放在Linearlayout布局的底部(底部导航条)      <LinearLayout      android:layoutwidth="matchparent"      android:orientation="vertical"      andro......

SEOwhywhy
2018/12/08
0
0
BRVAH(让RecyclerView变得更高效) (3)

本文来自网易云社区 作者:吴思博 3 实现列表加载动画效果 3.1默认动画 我们只需将自建的 adapter 继承它对应满足需求的 Adapter,然后在 Activity 中实例化,通过openLoadAnimation() 方法完...

网易云
2018/09/30
0
0
Android进阶——框架打造之RecyclerView框架

前言 RecyclerView已经完全替代了ListView的开发,其强大之处在于性能、内存、使用、灵活、丰富的API、动画、事件处理上都可以完美的体现出来,对于开发者来说RecyclerView是必须精通的一关,...

qq_30379689
2018/01/07
0
0
Android RecyclerView下拉刷新、上拉加载更多、到底自动加载更多

一、废话 搞了这么久的Android,可能是我渠道比较闭塞,一直没找到比较好用的下拉刷新,往上找的第三方比较知名的一些,都说有这样那样的瑕疵,一直用的SwipeRefreshLayout 做下拉加载,然后...

她叫我小渝
2017/10/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

解决vim打开之后乱码的问题

在Windows中的文档,传输到Linux系统中(使用rz命令),出现乱码 root@localhost ~]# rpm -qf `which iconv` glibc-common-2.17-105.el7.x86_64 [root@localhost ~]# rpm -ihv /mnt/Packages......

寰宇01
25分钟前
1
0
aldi 2017年1月记录

../../tools/CBLAS/lib/cblas_LINUX.a ../../tools/lapack-3.4.2/liblapacke.a \../../tools/lapack-3.4.2/librefblas.a -lgfortran \../../tools/lapack-3.4.2/liblapack.a \../../......

MtrS
27分钟前
2
0
Choerodon如何进行日志收集与告警

作者:董文启 应用程序日志是由软件应用程序记录的事件文件, 它一般包含错误,信息事件和警告。一个良好的日志系统有助于快速发现问题,定位问题,同时也为业务分析起到一定的作用。 传统E...

Choerodon
38分钟前
2
0
js二维码生成插件“jquery.qrcode.min.js”

<!doctype html> <html> <head> <meta charset="utf-8" /> <title>生成二维码</title> <script type='text/javascript' src='http://cdn.staticfile.org/jquery/2.1.1/jquery.min.js'></scri......

泉天下
42分钟前
1
0
Spring AOP之同一个对象方法内部自调用导致事务失效问题

对于像我这种喜欢滥用AOP的程序员,遇到坑也是习惯了,不仅仅是事务,其实只要脱离了Spring容器管理的所有对象,对于SpringAOP的注解都会失效,因为他们不是Spring容器的代理类,SpringAOP,就切入不...

xiaomin0322
48分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部