XRecyclerView:实现下拉刷新、滚动到底部加载更多以及添加header功能的RecyclerView
介绍:
一个实现了下拉刷新,滚动到底部加载更多以及添加header功能的的RecyclerView。使用方式和RecyclerView完全一致,不需要额外的layout,不需要写特殊的adater。 加载效果内置了AVLoadingIndicatorView上的所有效果,可以根据需要指定。
项目地址:https://github.com/jianghejie/XRecyclerView
效果:

使用:
xml
01.<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"02.xmlns:tools="http://schemas.android.com/tools"03.android:layout_width="match_parent"04.android:layout_height="match_parent"05.tools:context=".MainActivity">06. 07.<com.jcodecraeer.xrecyclerview.XRecyclerView08.android:id="@+id/recyclerview"09.android:layout_width="fill_parent"10.android:layout_height="fill_parent" />11. 12.</RelativeLayout>2.MainActivity
001.package com.example.xrecyclerview;002. 003.import android.os.Bundle;004.import android.os.Handler;005.import android.support.v7.app.AppCompatActivity;006.import android.support.v7.widget.LinearLayoutManager;007.import android.view.LayoutInflater;008.import android.view.Menu;009.import android.view.MenuItem;010.import android.view.View;011.import android.view.ViewGroup;012. 013.import com.jcodecraeer.xrecyclerview.ProgressStyle;014.import com.jcodecraeer.xrecyclerview.XRecyclerView;015. 016.import java.util.ArrayList;017. 018.public class MainActivity extends AppCompatActivity {019.private XRecyclerView mRecyclerView;020.private MyAdapter mAdapter;021.private ArrayList<String> listData;022.private int refreshTime = 0;023.@Override024.protected void onCreate(Bundle savedInstanceState) {025.super.onCreate(savedInstanceState);026.setContentView(R.layout.activity_main);027.mRecyclerView = (XRecyclerView)this.findViewById(R.id.recyclerview);028.LinearLayoutManager layoutManager = new LinearLayoutManager(this);029.layoutManager.setOrientation(LinearLayoutManager.VERTICAL);030.mRecyclerView.setLayoutManager(layoutManager);031. 032.mRecyclerView.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader);033.mRecyclerView.setLaodingMoreProgressStyle(ProgressStyle.Pacman);034.mRecyclerView.setArrowImageView(R.drawable.iconfont_downgrey);035. 036.View header = LayoutInflater.from(this).inflate(R.layout.recyclerview_header, (ViewGroup)findViewById(android.R.id.content),false);037.mRecyclerView.addHeaderView(header);038. 039. 040.mRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {041.@Override042.public void onRefresh() {043.refreshTime ++;044.new Handler().postDelayed(new Runnable(){045.public void run() {046.listData.clear();047.for(int i = 0; i < 15 ;i++){048.listData.add("item" + i + "after " + refreshTime + " times of refresh");049.}050.mAdapter.notifyDataSetChanged();051.mRecyclerView.refreshComplete();052.}053. 054.}, 3000); //refresh data here055.}056. 057.@Override058.public void onLoadMore() {059.new Handler().postDelayed(new Runnable(){060.public void run() {061.for(int i = 0; i < 15 ;i++){062.listData.add("item" + (i + listData.size()) );063.}064.mAdapter.notifyDataSetChanged();065.mRecyclerView.loadMoreComplete();066.}067.}, 3000);068. 069.}070.});071. 072.listData = new ArrayList<String>();073.mAdapter = new MyAdapter(listData);074.for(int i = 0; i < 15 ;i++){075.listData.add("item" + i);076.}077.mRecyclerView.setAdapter(mAdapter);078.}079. 080.@Override081.public boolean onCreateOptionsMenu(Menu menu) {082.// Inflate the menu; this adds items to the action bar if it is present.083.getMenuInflater().inflate(R.menu.menu_main, menu);084.return true;085.}086. 087.@Override088.public boolean onOptionsItemSelected(MenuItem item) {089.// Handle action bar item clicks here. The action bar will090.// automatically handle clicks on the Home/Up button, so long091.// as you specify a parent activity in AndroidManifest.xml.092.int id = item.getItemId();093. 094.//noinspection SimplifiableIfStatement095.if (id == R.id.action_settings) {096.return true;097.}098. 099.return super.onOptionsItemSelected(item);100.}101. 102. 103.}3. adapter
01.package com.example.xrecyclerview;02. 03.import android.support.v7.widget.RecyclerView;04.import android.view.LayoutInflater;05.import android.view.View;06.import android.view.ViewGroup;07.import android.widget.TextView;08. 09.import java.util.ArrayList;10. 11./**12.* Created by jianghejie on 15/11/26.13.*/14.public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {15.public ArrayList<String> datas = null;16.public MyAdapter(ArrayList<String> datas) {17.this.datas = datas;18.}19.//创建新View,被LayoutManager所调用20.@Override21.public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {22.View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item,viewGroup,false);23.ViewHolder vh = new ViewHolder(view);24.return vh;25.}26.//将数据与界面进行绑定的操作27.@Override28.public void onBindViewHolder(ViewHolder viewHolder, int position) {29.viewHolder.mTextView.setText(datas.get(position));30.}31.//获取数据的数量32.@Override33.public int getItemCount() {34.return datas.size();35.}36.//自定义的ViewHolder,持有每个Item的的所有界面元素37.public static class ViewHolder extends RecyclerView.ViewHolder {38.public TextView mTextView;39.public ViewHolder(View view){40.super(view);41.mTextView = (TextView) view.findViewById(R.id.text);42.}43.}44.}
XRecyclerView:实现下拉刷新、滚动到底部加载更多以及添加header功能的RecyclerView的更多相关文章
- Android如何定制一个下拉刷新,上滑加载更多的容器
前言 下拉刷新和上滑加载更多,是一种比较常用的列表数据交互方式. android提供了原生的下拉刷新容器 SwipeRefreshLayout,可惜样式不能定制. 于是打算自己实现一个专用的.但是下拉 ...
- 滚动到底部加载更多及下拉刷新listview的使用
最新内容建议直接访问原文:滚动到底部加载更多及下拉刷新listview的使用 本文主要介绍可同时实现下拉刷新及滑动到底部加载更多的ListView的使用. 该ListView优点包括:a. 可自定义下 ...
- android ListView的上部下拉刷新下部点击加载更多具体实现及拓展
android ListView的上部下拉刷新下部点击加载更多具体实现及拓展 ListView下拉刷新,上拉自动加载更多 下拉刷新以及加载更多
- 一个简单的适用于Vue的下拉刷新,触底加载组件
一个简单的适用于Vue的上拉刷新,触底加载组件,没有发布npm需要时直接粘贴定制修改即可 <template> <div class="list-warp-template ...
- ionic 上拉加载更多&瀑布流加载&滚动到底部加载更多 主意事项
首先下拉刷新的代码是这样的,标红的地方为关键代码 <html> <head> <meta charset="utf-8"> <meta n ...
- Jquery实现滚动到底部加载更多(最原始)
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...
- vant list列表滚动到底部加载更多会滚动到顶部问题
如果使用异步加载数据并使用了vant中的toast做加载中提示,则有可能会导致列表滚动高度为0,也就是回到了顶部.只要在list加载回调里不使用toast就可以避免这个问题.
- Android中GridView滚动到底部加载数据终极版
之前在项目中有一个需求是需要GridView控件,滚动到底部自动加载.但是呢GridView控件并不提供诸如ListView监听滚动到底部的onScrollListener方法,为了实现这样一个效果, ...
- Jqeury Mobile实战之切屏效果以及屏幕滚动到底端加载更多和点击切换更多
http://blog.csdn.net/q718330882/article/details/46120691 //页面滚动到底部加载更多事件 $( window ).scroll(function ...
随机推荐
- docker初识-docker安装、基于docker安装mysql及tomcat、基本命令
一.docker是什么 用go语言开发,开源的应用容器引擎,容器性能开销极低 二.整体架构图 Docker 包括三个基本概念: 镜像(Image):Docker 镜像(Image),就相当于是一个 r ...
- 区块链开发学习第七章:第一个Dapp-猜拳游戏
第一个简单的Dapp-猜拳游戏.本智能合约的功能很简单,就是用户与电脑猜拳,用户选择出手后,电脑随机一个选项,然后调用智能合约方法把两个选项值传过去,在智能合约上进行比较,并通过区块链合约事件广播结果 ...
- CF749A Bachgold Problem 题解
Content 给定一个数 \(n\),求它最多能够拆分成多少个质数,并输出拆分成的每一个质数. 数据范围:\(2\leqslant n\leqslant 10^5\). Solution 我们考虑尽 ...
- SSM——Spring框架
Spring概念 什么是Spring Spring两大核心 1.IOC 所谓的IOC称之为控制反转,简单来说就是将对象的创建的权利及对象的生命周期的管理过程交由Spring框架来处理,从此在开发过程中 ...
- tmux技巧
tmux 输入sz rz卡住的解决办法 解决: 仅连续4次输入ctrl+x即可解决. 原因:原因是在Xmodem协议中,ctrl+x 为信号 CAN,在协议中为"无条件中止"信号. ...
- float浮动的详细总结
float浮动的详细总结 1.定位方案 在css中,有4种常用的方法对元素进行定位和布局: normal flow:标准流.文档流: position:定位(relative.absolute.fix ...
- 解决Xshell 连接Linux 窗口不活动会自动断开连接
修改linux服务器ssh断开时间 修改profile配置 vim /etc/profile 增加配置 后面单位秒 这里就是三分钟不活动断开连接 TMOUT=180 然后使用 wq! 进行保存,使 ...
- 【LeetCode】1423. 可获得的最大点数 Maximum Points You Can Obtain from Cards (Python)
作者: 负雪明烛 id: fuxuemingzhu 公众号:每日算法题 本文关键词:LeetCode,力扣,算法,算法题,滑动窗口,递归,前缀和,preSum,刷题群 目录 题目描述 解题思路 递归 ...
- 【LeetCode】406. Queue Reconstruction by Height 解题报告(Python & C++ & Java)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- 【九度OJ】题目1205:N阶楼梯上楼问题 解题报告
[九度OJ]题目1205:N阶楼梯上楼问题 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1205 题目描述: N阶楼梯上楼问题:一次 ...