RecyclerView实现左滑加载
背景
车载项目中,默认横屏,消息中心通过RecylerView展示各类消息,现在要求实现用户左滑获取更多消息并展示,实现方案是增加一个footerview布局,在原来的adpater上包裹一个新的adapter,监听用户滑动方向,这样做的好处是不需要修改原来的adapter,也不需要知道原来的adapter是怎么实现的。左滑和上滑只是方向的不同。
footview布局
定义一个footview.xml布局,里面是个loading的图片。
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="match_parent"
>
<ImageView
android:id="@+id/loading_img"
android:layout_width="60dp"
android:layout_height="60dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_loading" />
</androidx.constraintlayout.widget.ConstraintLayout>
FootViewHolder
public class FootViewHolder extends BaseItemAdapter.BaseViewHolder {
@Getter
private ImageView loadingImg;
public FootViewHolder(View itemView) {
super(itemView);
loadingImg = (ImageView) itemView.findViewById(R.id.loading_img);
}
}
新的adapter
定义一个LoadMoreAdapter.java,构造方法中传入原来的adapter。
public class LoadMoreAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private RecyclerView.Adapter adapter;
// 普通布局
private static final int TYPE_ITEM = 1;
// 脚布局
private static final int TYPE_FOOTER = 2;
// 当前加载状态
private int loadState = 2;
// 正在加载
public static final int LOADING = 1;
// 加载完成
public static final int LOADING_COMPLETE = 2;
// 左滑加载
public</