一、简介

BRVAH 是一个强大的 RecyclerAdapter 框架,它能节约开发者大量的开发时间,集成了大部分列表常用需求解决方案。

二、框架引入

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

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

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

dependencies {implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30'
}

三、使用 Adapter

1. 效果图

2. HomeBean.java

/*** Created on 2019/11/28 9:30** @author Gong Youqiang*/
public class HomeBean {private String name;private int iconId;public HomeBean(String name, int iconId) {this.name = name;this.iconId = iconId;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getIconId() {return iconId;}public void setIconId(int iconId) {this.iconId = iconId;}
}

2. HomeAdapter.java

/*** Created on 2019/11/28 9:31** @author Gong Youqiang*/
public class HomeAdapter extends BaseQuickAdapter<HomeBean, BaseViewHolder> {public HomeAdapter(int layoutResId, @Nullable List<HomeBean> data) {super(layoutResId, data);}@Overrideprotected void convert(BaseViewHolder helper, HomeBean item) {helper.setText(R.id.tv_name,item.getName());helper.setImageResource(R.id.iv_img,item.getIconId());CardView cardView = helper.getView(R.id.card_view);helper.addOnClickListener(R.id.card_view);}
}

3. item_home.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardViewxmlns:android="http://schemas.android.com/apk/res/android"xmlns:card_view="http://schemas.android.com/apk/res-auto"android:id="@+id/card_view"android:layout_width="120dp"android:layout_height="120dp"android:layout_gravity="center"android:foreground="?android:attr/selectableItemBackground"card_view:cardBackgroundColor="@color/white"card_view:cardCornerRadius="4dp"card_view:cardElevation="2dp"card_view:cardUseCompatPadding="true"><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:gravity="center"android:orientation="vertical"><ImageViewandroid:id="@+id/iv_img"android:layout_width="90dp"android:layout_height="90dp"android:src="@mipmap/ic_launcher"/><TextViewandroid:id="@+id/tv_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="16sp"android:text="android"android:textColor="@color/black"/></LinearLayout>
</androidx.cardview.widget.CardView>

4. activity_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/recyclerView"android:layout_width="match_parent"android:layout_height="match_parent"/>
</LinearLayout>

5. top_view.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/imageView"android:layout_width="match_parent"android:layout_height="wrap_content"app:srcCompat="@mipmap/ic_home_bg" />
</LinearLayout>

6. Activity

public class LayoutActivity extends AppCompatActivity {@BindView(R.id.recyclerView)RecyclerView mRecyclerView;HomeAdapter mAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_layout);ButterKnife.bind(this);initAdapter();}private void initAdapter() {mAdapter = new HomeAdapter(R.layout.item_home,getHomeItem());mAdapter.openLoadAnimation();View top = getLayoutInflater().inflate(R.layout.top_view, (ViewGroup) mRecyclerView.getParent(), false);mAdapter.addHeaderView(top);mAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {@Overridepublic void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {Toast.makeText(LayoutActivity.this,"click"+position,Toast.LENGTH_SHORT).show();}});mRecyclerView.setLayoutManager(new GridLayoutManager(LayoutActivity.this,3));mRecyclerView.setAdapter(mAdapter);}private List<HomeBean> getHomeItem() {return Arrays.asList(new HomeBean("android",R.mipmap.ic_launcher),new HomeBean("ios",R.mipmap.ic_launcher),new HomeBean("haha",R.mipmap.ic_launcher),new HomeBean("andnnroid",R.mipmap.ic_launcher),new HomeBean("dddd",R.mipmap.ic_launcher),new HomeBean("dddd",R.mipmap.ic_launcher),new HomeBean("dddd",R.mipmap.ic_launcher),new HomeBean("dddd",R.mipmap.ic_launcher),new HomeBean("dddd",R.mipmap.ic_launcher),new HomeBean("dddd",R.mipmap.ic_launcher),new HomeBean("dddd",R.mipmap.ic_launcher));}}

四、常见问题

为什么有数据不显示?
请检查一下你的RecyclerView是否设置了LayoutManager。

为什么有10条数据,只显示1条?
请检查一下item的布局最外层的Layout是不是layout_height设置了match_parent.

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

  if(entity.isCheck){checkBox.isChecked(true);} else {checkBox.isChecked(false);}

推荐阅读

BRVAH官方使用指南

【Android -- 开源库】BRVAH 的基本使用相关推荐

  1. 关于Android开源库分享平台,(GitClub)微信小程序的开发体验

    七八月份的深圳一直在下雨,总有人说雨天适合窝在家看书,对于程序开发者来说更是难得的学习机会.我们502工作室的小伙伴利用这个时间学习了一下微信小程序开发,并上线了一个GitClub小程序,目前功能有些 ...

  2. Android 开源库获取途径整理

    最新内容请见原文: http://www.trinea.cn/android/android-open-project-summary/ 介绍目前收藏 Android 开源库比较多的 GitHub 项 ...

  3. Android开源库集合(控件)

    RecycleView: RecycleView功能增强 https://github.com/Malinskiy/SuperRecyclerView RecycleView功能增强(拖拽,滑动删除, ...

  4. Android开源库集合(UI效果)

    动画效果 粒子动画效果 https://github.com/glomadrian/Grav 水波式loading等待动画 https://github.com/race604/WaveLoading ...

  5. android 日历翻页动画,Android开源库合集:轻松实现Android动态,炫目:日历效果...

    前言: 了解过那种动态,炫目的日历效果吗?你知道是怎么 操作的嘛?是否想过,用UI就可以实现,对,也许你说的对,不过UI只是都是动态效果的一部分.那么今天用Annroid开源库,来告诉你android ...

  6. Android开源库V - Layout:淘宝、天猫都在用的UI框架,赶紧用起来吧!

    前言 V- Layout 是阿里出品的基础 UI 框架,用于快速实现页面的复杂布局,在手机天猫 Android版 内广泛使用 让人激动的是,在上个月V- Layout终于在Github上开源! Git ...

  7. GitHub 上排名前 100 的 Android 开源库介绍

    转自:http://www.codeceo.com/article/github-top-100-android-libs.html 本项目主要对目前 GitHub 上排名前 100 的 Androi ...

  8. Android开源库总结

    自己总结的Android开源项目及库. github排名https://github.com/trending, github搜索:https://github.com/search UI Aweso ...

  9. 排名前100的Android开源库

    本项目主要对目前GitHub上排名前100的Android开源库进行简单的介绍,至于排名完全是根据GitHub搜索Java语言选择「BestMatch」得到的结果,然后过滤了跟Android不相关的项 ...

  10. GitHub 上排名前 100 的 Android 开源库进行简单的介绍

    本文转载于:https://github.com/Freelander/Android_Data/blob/master/Android-Librarys-Top-100.md 本项目主要对目前 Gi ...

最新文章

  1. 51CTO学院薛大龙软考班,再努力一点点就能成功了
  2. 免费在线共享思维导图敏捷开发工具Leangoo
  3. OpenCV Mat 简介
  4. 关于.framework 文件过大 移除包内对i386 x86_64 的支持
  5. DenyHosts教程:防暴力破解SSH密码
  6. python 字符串转日期_我总结的130页Python与机器学习之路V1.2.pdf,都是干货!
  7. java uuid静态方法_Java UUID的variant()方法和示例
  8. c语言经典例题100例
  9. Windows下Tuxedo的安装与配置-无数据库
  10. 生成订单30分钟未支付,则自动取消,该怎么实现?原来大公司的最有解是这样的!...
  11. Module Zero之语言管理
  12. windows 核心编程下的内存映射文件
  13. android无线充电技术,无线充电Qi通信协议分析,充电qi通信协议
  14. 关于表单流程设计器 以及 问卷调查生成器的开发准备
  15. 大连雅思培训百家国际雅思考试词汇量要求与记忆方法是什么
  16. IPD解读--华为500强的研发第一名,除了钱还有IPD
  17. 2022.12.13 英语背诵
  18. 【推荐】智慧检察公益诉讼辅助快检AI人工智能大数据平台解决方案合集(共183份,928M)
  19. 场景背后见真章:银行数字化转型持续深入
  20. 公众号点击图片变成另一张_公众号互动内容:小众潮流or下一个风口?

热门文章

  1. 深入理解DRM(二)——了解Widevine与OEMCrypto
  2. MATLAB:数值微积分
  3. html js打开一个新页面跳转,js页面跳转
  4. 关于openstack,cloudstack,Eucalyptus对比分析
  5. linux hg 图形,Linux下Mercurial (hg)配置说明
  6. matlab2017a安装出现license checkout failed Error-8
  7. python去除视频马赛克_手把手教你用Python去除马赛克!
  8. Git下载并安装(完整、详细教程)
  9. 如何写一份大家都满意的专利说明书
  10. 过程工业中的smartLink HART-IP