XRecyclerView实现下拉刷新、滚动到底部加载更多等功能

 更新时间:2021年01月02日 09:15:11   作者:Tryking  
这篇文章主要为大家详细介绍了XRecyclerView实现下拉刷新、滚动到底部加载更多等功能,以及添加header功能的RecyclerView,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

介绍:

一个实现了下拉刷新,滚动到底部加载更多以及添加header功能的的RecyclerView。使用方式和RecyclerView完全一致,不需要额外的layout,不需要写特殊的adater。 加载效果内置了AVLoadingIndicatorView上的所有效果,可以根据需要指定。

项目地址:https://github.com/jianghejie/XRecyclerView

效果:

使用:

xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">


<com.jcodecraeer.xrecyclerview.XRecyclerView
android:id="@+id/recyclerview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />

</RelativeLayout>

2.MainActivity

package com.example.xrecyclerview;
 
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import com.jcodecraeer.xrecyclerview.ProgressStyle;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
import java.util.ArrayList;
 

public class MainActivity extends AppCompatActivity {
private XRecyclerView mRecyclerView;
private MyAdapter mAdapter;
private ArrayList<String> listData;
private int refreshTime = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRecyclerView = (XRecyclerView)this.findViewById(R.id.recyclerview);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.setLayoutManager(layoutManager);

mRecyclerView.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader);
mRecyclerView.setLaodingMoreProgressStyle(ProgressStyle.Pacman);
mRecyclerView.setArrowImageView(R.drawable.iconfont_downgrey);


View header = LayoutInflater.from(this).inflate(R.layout.recyclerview_header, (ViewGroup)findViewById(android.R.id.content),false);
mRecyclerView.addHeaderView(header);


mRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
refreshTime ++;
new Handler().postDelayed(new Runnable(){
public void run() {
listData.clear();
for(int i = 0; i < 15 ;i++){
listData.add("item" + i + "after " + refreshTime + " times of refresh");
}
mAdapter.notifyDataSetChanged();
mRecyclerView.refreshComplete();
}
}, 3000);  //refresh data here
}
 
@Override
public void onLoadMore() {
new Handler().postDelayed(new Runnable(){
public void run() {
for(int i = 0; i < 15 ;i++){
listData.add("item" + (i + listData.size()) );
}
mAdapter.notifyDataSetChanged();
mRecyclerView.loadMoreComplete();
}
}, 3000);
 
}

});
 
listData = new ArrayList<String>();
mAdapter = new MyAdapter(listData);
for(int i = 0; i < 15 ;i++){
listData.add("item" + i);
}
mRecyclerView.setAdapter(mAdapter);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
 
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

//noinspection SimplifiableIfStatement

if (id == R.id.action_settings) {
return true;
}
 
return super.onOptionsItemSelected(item);
}
 
 
}

3. adapter

package com.example.xrecyclerview;


import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.ArrayList;

/**
* Created by jianghejie on 15/11/26.
*/
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
public ArrayList<String> datas = null;
public MyAdapter(ArrayList<String> datas) {
this.datas = datas;
}
//创建新View,被LayoutManager所调用
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item,viewGroup,false);
ViewHolder vh = new ViewHolder(view);
return vh;
}
//将数据与界面进行绑定的操作
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
viewHolder.mTextView.setText(datas.get(position));
}
//获取数据的数量
@Override
public int getItemCount() {
return datas.size();
}
//自定义的ViewHolder,持有每个Item的的所有界面元素
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView mTextView;
public ViewHolder(View view){
super(view);

mTextView = (TextView) view.findViewById(R.id.text);
}


}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android中的二维码生成与扫描功能

    Android中的二维码生成与扫描功能

    二维码在我们身边真的非常普遍,今天小编给大家分享二维码生成与扫描功能,依然使用目前比较流行的zxing方法,具体实现思路大家通过本文一起学习吧
    2017-01-01
  • Android多渠道打包时获取当前渠道的方法

    Android多渠道打包时获取当前渠道的方法

    这篇文章主要介绍了Android多渠道打包时获取当前渠道的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 简单实现Android闹钟程序 附源码

    简单实现Android闹钟程序 附源码

    这篇文章主要帮助大家简单实现Android闹钟程序,附源码下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • Kotlin Service服务组件开发详解

    Kotlin Service服务组件开发详解

    这几天分析了一下的启动过程,于是乎,今天写一下Service使用; 给我的感觉是它并不复杂,千万不要被一坨一坨的代码吓住了,虽然弯弯绕绕不少,重载函数一个接着一个,就向走迷宫一样,但只要抓住主线阅读,很快就能找到出口
    2022-12-12
  • 实例详解Android 获取短信会话列表

    实例详解Android 获取短信会话列表

    本文通过实例详解android获取短信会话列表的全部内容,涉及到android获取短信列表的相关知识,对android会话列表相关知识感兴趣的朋友一起学习吧
    2015-12-12
  • 实例详解Android Selector和Shape的用法

    实例详解Android Selector和Shape的用法

    shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector,通过本文结合代码实例给大家详解Android Selector和Shape的用法,感兴趣的朋友一起学习吧
    2016-01-01
  • Android ToggleButton 详解及实例代码

    Android ToggleButton 详解及实例代码

    这篇文章主要介绍了Android ToggleButton 详解及实例代码的相关资料,需要的朋友可以参考下
    2017-02-02
  • Android实现悬浮可拖拽的Button

    Android实现悬浮可拖拽的Button

    这篇文章主要为大家详细介绍了Android实现悬浮可拖拽的Button,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • Android开发之DOM解析xml文件的方法

    Android开发之DOM解析xml文件的方法

    这篇文章主要介绍了Android开发之DOM解析xml文件的方法,涉及Android中DOM工厂对象的创建,文档的获取及节点的遍历技巧,需要的朋友可以参考下
    2015-12-12
  • Android实现连续点击多次事件的代码详解

    Android实现连续点击多次事件的代码详解

    小编经常遇到这样的需求类似进入开发者模式,即多次点击后执行操作。下面小编通过实例代码给大家讲解Android实现连续点击多次事件的相关知识,感兴趣的朋友跟随小编一起学习吧
    2018-10-10

最新评论