Android RecyclerView(四)继续学习BRVAH

版权声明:转载请说明出处 https://blog.csdn.net/qq_41816123/article/details/86156927

学玩这章你会啥

RecyclerView的下面几点可还ok。

  1. 上拉刷新
  2. 下拉加载
  3. 拖动
  4. 滑动删除
    在这里插入图片描述

上拉刷新

1.方法setOnLoadMoreListener();
//下拉加载
meAdapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() {
    //显示条目长度
    int dataSize;
    //假设数据库查询到了20条数据
    int sqlDataSize=20;
    boolean isErr=false;
    @Override public void onLoadMoreRequested() {
        recyclerView.postDelayed(new Runnable() {
            @Override
            public void run() {
                if (dataSize >= sqlDataSize) {
                    //数据全部加载完毕
                    meAdapter.loadMoreEnd();
                } else {
                    if (isErr) {
                        //成功获取更多数据
                        meAdapter.addData(getData());
                        dataSize = meAdapter.getData().size();
                        meAdapter.loadMoreComplete();
                    } else {
                        //获取更多数据失败
                        isErr = true;
                        Toast.makeText(MainActivity.this, "获取数据失败", Toast.LENGTH_LONG).show();
                        meAdapter.loadMoreFail();

                    }
                }
            }

        }, 1000);
    }
}, recyclerView);
2.在看看我们的getData()方法
public List<User> getData() {
    //每次添加两条
    List<User> users=new ArrayList<>();
    users.add(new User(R.drawable.tx,"上啦1"));
    users.add(new User(R.drawable.tx0,"上啦2"));
    return users;
}
3.再给你这三个方法理一下

加载完成(注意不是加载结束,而是本次数据加载结束并且还有下页数据)

meAdapter.loadMoreComplete();

加载失败

meAdapter.loadMoreFail();

加载结束

meAdapter.loadMoreEnd();
4.如果出现了错误

Landroid/support/v4/animation/AnimatorCompatHelper;
Android 报错-6
会告诉你解决方法

在这里插入图片描述
坑都被我踩完了。。。

5.效果图

在这里插入图片描述
点击重试
在这里插入图片描述
继续下拉,最后
在这里插入图片描述

下拉加载

1.打开下拉加载开关
//开启下拉加载开关
meAdapter.setUpFetchEnable(true);
2.设置监听
//下拉加载
meAdapter.setUpFetchListener(new BaseQuickAdapter.UpFetchListener() {
    @Override
    public void onUpFetch() {
        startUpFetch();
    }
});
3.startUpFetCh()方法的实现
private int count=0;
private void startUpFetch() {
    count++;

    meAdapter.setUpFetching(true);

    recyclerView.postDelayed(new Runnable() {
        @Override
        public void run() {
        	//getData()就是上拉刷新的方法,一次加载两条
            meAdapter.addData(0, getData());

            meAdapter.setUpFetching(false);
			
            if (count > 2) {//默认加载两次
            	//加载后关闭开关
                meAdapter.setUpFetchEnable(false);
            }
        }
    }, 300);//0.3秒一次
}
4.效果图

这是进去的效果图
在这里插入图片描述
然后我们下拉
在这里插入图片描述
由于引用的是上拉的getData方法所以名称没改了。

拖动和滑动删除

1.改一下我们的meAdapter继承BaseItemDraggableAdapter然后alt+enter,平常没事可以多ctrl点击进去瞧一瞧,看一看。会有大发现,我只不过发现了BaseItemDraggableAdapter继承的还是BaseQuickAdapter而已
public class MeAdapter extends BaseItemDraggableAdapter<User,BaseViewHolder> {

    public MeAdapter(int layoutResId, @Nullable List<User> data) {
        super(layoutResId, data);
    }

    @Override
    protected void convert(BaseViewHolder helper, User item) {
        helper.setImageResource(R.id.iv_user_img,item.getImg())
                .setText(R.id.tv_user_name,item.getName())
                .addOnClickListener(R.id.iv_user_img)
                .addOnLongClickListener(R.id.iv_user_img);
    }
}
2.编写它们的回调方法
//拖拽回调方法
OnItemDragListener onItemDragListener = new OnItemDragListener() {
    @Override
    public void onItemDragStart(RecyclerView.ViewHolder viewHolder, int pos){}
    @Override
    public void onItemDragMoving(RecyclerView.ViewHolder source, int from, RecyclerView.ViewHolder target, int to) {}
    @Override
    public void onItemDragEnd(RecyclerView.ViewHolder viewHolder, int pos) {}
};
//滑动回调方法
OnItemSwipeListener onItemSwipeListener = new OnItemSwipeListener() {
    @Override
    public void onItemSwipeStart(RecyclerView.ViewHolder viewHolder, int pos) {}
    @Override
    public void clearView(RecyclerView.ViewHolder viewHolder, int pos) {}
    @Override
    public void onItemSwiped(RecyclerView.ViewHolder viewHolder, int pos) {}

    @Override
    public void onItemSwipeMoving(Canvas canvas, RecyclerView.ViewHolder viewHolder, float dX, float dY, boolean isCurrentlyActive) {

    }
};
3.活动的调用
ItemDragAndSwipeCallback itemDragAndSwipeCallback = new ItemDragAndSwipeCallback(meAdapter);
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(itemDragAndSwipeCallback);
itemTouchHelper.attachToRecyclerView(recyclerView);

// 开启拖拽
meAdapter.enableDragItem(itemTouchHelper, R.id.item_user, true);
meAdapter.setOnItemDragListener(onItemDragListener);

// 开启滑动删除
meAdapter.enableSwipeItem();
meAdapter.setOnItemSwipeListener(onItemSwipeListener);

recyclerView.setAdapter(meAdapter);
4.效果图

这是滑动删除
在这里插入图片描述
在看看我们的拖动
在这里插入图片描述

基本的RecyclerView万能适配器就到这了
更详细的请看
BRVAH官方使用指南
有啥疑问可以评论留言
在这里插入图片描述
吗?

猜你喜欢

转载自blog.csdn.net/qq_41816123/article/details/86156927
今日推荐