说明:该自定义RecyclerView只适用于layoutManager为LinearLayoutManager的情况,使用的还是RecyclerView.Adapter。
效果图
使用
1、编写layout文件
<?xml version="1.0" encoding="utf-8"?>
<com.shbj.refreashrvdemo.ui.RefreashRecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.shbj.refreashrvdemo.ui.RefreashRecyclerView>
2、定义HeaderView
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:visibility="visible"
android:id="@+id/tv_refresh"
android:layout_width="match_parent"
android:layout_height="80dp"
android:gravity="center"
android:text="下拉刷新"
android:textAllCaps="false"
android:textSize="18sp"
android:textStyle="bold"/>
<LinearLayout
android:id="@+id/ll_refreshing"
android:layout_width="match_parent"
android:layout_height="80dp"
android:gravity="center"
android:orientation="horizontal"
android:visibility="invisible">
<ProgressBar
android:layout_width="30dp"
android:layout_height="30dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="20dp"
android:text="刷新中..."
android:textSize="15sp"/>
</LinearLayout>
</FrameLayout>
3、定义FooterView
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_load"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:text="加载更多"
android:textSize="15sp"/>
<LinearLayout
android:id="@+id/ll_loading"
android:visibility="invisible"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:orientation="horizontal">
<ProgressBar
android:layout_width="30dp"
android:layout_height="30dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="20dp"
android:text="加载中..."
android:textSize="15sp"/>
</LinearLayout>
</FrameLayout>
4、Java代码实现
package com.shbj.refreashrvdemo;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.o