brvah树状结构默认展开第一个_BRVAH官方使用指南(持续更新)

BRVAH是一个强大的RecyclerView适配器框架,可极大简化Adapter代码,支持点击事件、动画、头部/尾部、自动加载等功能。本文详细介绍了如何引入、使用BRVAH,包括Item事件、加载动画、分组布局和拖拽删除等,并提供了常见问题解答。
摘要由CSDN通过智能技术生成

www.recyclerview.org

BRVAH是一个强大的RecyclerAdapter框架(什么是RecyclerView?),它能节约开发者大量的开发时间,集成了大部分列表常用需求解决方案。为什么会有它?请查看「Android开源框架BRVAH由来篇」该框架于2016年4月10号发布的第1个版本到现在已经一年多了,经历了800多次代码提交,140多次版本打包,修复了1000多个问题,获得了9000多star,非常感谢大家的使用以及反馈。

本篇为BRVAH的使用指南以及包含常见问题会第一时间更新最新的使用方法。最新版本请查看releases,由于持续更新。

文章目录

框架引入

优化Adapter代码

和原始的adapter相对,减少70%的代码量。

添加Item事件

Item的点击事件

Item的长按事件

Item子控件的点击事件

Item子控件的长按事件

添加列表加载动画

一行代码轻松切换5种默认动画。

添加头部、尾部

一行代码搞定,感觉又回到ListView时代。

自动加载

上拉加载无需监听滑动事件,可自定义加载布局,显示异常提示,自定义异常提示。同时支持下拉加载。

分组布局

随心定义分组头部。

多布局

简单配置、无需重写额外方法。

设置空布局

比Listview的setEmptyView还要好用。

添加拖拽、滑动删除

开启,监听即可,就是这么简单。

树形列表

比ExpandableListView还要强大,支持多级。

自定义ViewHolder

支持自定义ViewHolder,让开发者随心所欲。

扩展框架

组合第三方框架,轻松实现更多需求定制。

框架引入

先在 build.gradle(Project:XXXX) 的 repositories 添加:

allprojects {

repositories {

...

maven { url "https://jitpack.io" }

}

}

然后在 build.gradle(Module:app) 的 dependencies 添加:

dependencies {

compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30'

}

注意

版本:2.9.28

Change the method setVisible --> setGone

The new method setVisible

setVisible:Set a view visibility to VISIBLE (true) or INVISIBLE (false).

setGone: Set a view visibility to VISIBLE (true) or GONE (false).

注意: 一旦出现加载失败的情况,只有两种情况:

配置没配置好

配置没配置好,有几种情况:

1. 只配置了dependencies

2. 配置repositories,但是位置错了,build.gradle(Project:XXXX) 文件下的repositories有两个,一个是buildscript下面的,一个是allprojects下面的,要配置到allprojects下面才是对的。

3. 版本号前面多一个v,这个是我的锅,在2.1.2版本之前都是带v的,之后(包含2.1.2)都不需要带v。

网络原因(这个就不解释了)

使用Adapter

和原始的adapter相对,减少70%的代码量。

使用代码

public class HomeAdapter extends BaseQuickAdapter {

public HomeAdapter(int layoutResId, List data) {

super(layoutResId, data);

}

@Override

protected void convert(BaseViewHolder helper, HomeItem item) {

helper.setText(R.id.text, item.getTitle());

helper.setImageResource(R.id.icon, item.getImageResource());

// 加载网络图片

Glide.with(mContext).load(item.getUserAvatar()).crossFade().into((ImageView) helper.getView(R.id.iv));

}

}

使用

首先需要继承BaseQuickAdapter,然后BaseQuickAdapter第一个泛型Status是数据实体类型,第二个BaseViewHolder是ViewHolder其目的是为了支持扩展ViewHolder。

赋值

可以直接使用viewHolder对象点相关方法通过传入viewId和数据进行,方法支持链式调用。如果是加载网络图片或自定义view可以通过viewHolder.getView(viewId)获取该控件。

常用方法

viewHolder.getLayoutPosition() 获取当前item的position

常见问题

这些问题不是使用该库的问题,但是经常有人问这些问题,所以特意写出来,帮助后续遇到以下问题的开发者们。

为什么有数据不显示?

请检查一下你的RecyclerView是否设置了LayoutManager。

为什么有10条数据,只显示1条?

请检查一下item的布局最外层的Layout是不是layout_height设置了match_parent.

数据状态错乱

这个问题无论是RecyclerView还是ListView不做处理都会出现问题,这个本质上是由于布局重用机制导致的,解决办法是通过数据状态来控制控件的状态,一定要设置状态无论什么状态,if和else是少不了的,如下代码:

if(entity.isCheck){

checkBox.isChecked(true);

} else {

checkBox.isChecked(false);

}

解决缓存问题案例:

添加Item事件

Item的点击事件

adapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {

@Override

public void onItemClick(BaseQuickAdapter adapter, View view, int position) {

Log.d(TAG, "onItemClick: ");

Toast.makeText(ItemClickActivity.this, "onItemClick" + position, Toast.LENGTH_SHORT).show();

}

});

Item的长按事件

adapter.setOnItemLongClickListener(new BaseQuickAdapter.OnItemLongClickListener() {

@Override

public boolean onItemLongClick(BaseQuickAdapter adapter, View view, int position) {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BRVAH 是一个强大的RecyclerView适配器库,它可以实现许多复杂的功能,包括列表无限循环滚动和item可点击。下面是实现这两个功能的步骤: 1. 列表无限循环滚动 BRVAH库提供了一个BannerLayoutHelper类,可以用来实现列表的无限循环滚动,具体步骤如下: (1)在适配器中重写getItemCount()方法,将其返回一个很大的数,比如Integer.MAX_VALUE,这样就可以实现列表的无限循环滚动。 (2)在适配器中重写getItemViewType()方法,根据不同的位置返回不同的viewType,比如第一个位置返回BANNER_VIEW_TYPE,其他位置返回NORMAL_VIEW_TYPE。 (3)在适配器中实现onCreateViewHolder()方法,根据不同的viewType返回不同的ViewHolder,比如BANNER_VIEW_TYPE返回BannerViewHolder,NORMAL_VIEW_TYPE返回NormalViewHolder。 (4)在BannerViewHolder中初始化BannerLayoutHelper,并将其绑定到RecyclerView上。 (5)在NormalViewHolder中将数据绑定到itemView上。 2. item可点击 BRVAH库的ViewHolder已经实现了点击事件的处理,只需要在ViewHolder中实现OnItemClickListener接口并重写onItemClick()方法即可。具体步骤如下: (1)在ViewHolder中实现OnItemClickListener接口。 (2)在ViewHolder的构造方法中将OnItemClickListener传递进来,并保存到类成员变量中。 (3)在itemView的setOnClickListener()方法中调用OnItemClickListener的onItemClick()方法。 示例代码如下: ```java public class NormalViewHolder extends BaseViewHolder<Data> implements View.OnClickListener { private OnItemClickListener mOnItemClickListener; public NormalViewHolder(View itemView, OnItemClickListener onItemClickListener) { super(itemView); mOnItemClickListener = onItemClickListener; itemView.setOnClickListener(this); } @Override public void onClick(View v) { if (mOnItemClickListener != null) { mOnItemClickListener.onItemClick(getAdapterPosition()); } } @Override public void setData(Data data) { // 将数据绑定到itemView上 } } ``` 注意:以上代码只是示例,具体实现可能会有所不同,需要根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值