RecyclerView && QuickAdapter
作者:互联网
RecyclerView
添加横线
eg:DiagnosisFragment.java
mIdentityRecyclerView.addItemDecoration(new ItemDecoration()
.setDivider(IS_NIGHT_MODE ? new ColorDrawable(getResources().getColor(R.color.c_000000)) : new ColorDrawable(getResources().getColor(R.color.c_36425b)))
.setDividerHeight(ScreenUtils.dpToPxInt(getActivity(), 0.5f))
.setPadding(ScreenUtils.dpToPxInt(getActivity(), 15f)));
RecyclerView之ItemDecoration由浅入深
GridLayoutManager
RecyclerView 中setSpanSizeLookup 解释
GridLayoutManager manager = new GridLayoutManager(getActivity(), 3);
manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
return mBrandAdapter.getItemViewType(position) == BaseMainItemType.ITEM_BRAND ? 1 : 3;
}
});
解:第一行代码设置3行,第二行代码通过设置setSpanSizeLookup覆盖了上面的设置,可以将页面动态设置一行3个一行两个,一行一个动态改变都是可以的。
QuickAdapter
总共封装以下几种适配器:
- BaseQuickAdapter
- (基类,也是最常用的,重点关注这个)
- BaseNestedScrollViewQuickAdapter
- NestedScrollView嵌套RecyclerView的时候使用BaseNestedScrollViewQuickAdapter
- BaseNoRefreshQuickAdapter
- SwipeRefreshLayout嵌套RecyclerView的时候,SwipeRefreshLayout的高度设为WRAP_CONTENT,会被子布局填充整个屏幕,高度不能随item自适应。
- BaseNoRefreshQuickAdapter把SwipeRefreshLayout去掉,不嵌套RecyclerView。
- 这个还是少用得了……
- BaseMultiItemQuickAdapter
另外还有:
- BaseViewHolder
接下来看项目用到就记录一下。
BaseViewHolder
整理一下常用的暴露出来的方法:
- 文本:
- setText(viewId, value);
- setTextColor()
- 背景图片:
- setImageResource(viewId,imageResId)
- setBackgroundColor(viewId,color)
- setBackgroundRes(viewId, backgroundRes)
- setBackgroundDrawable()
- setImageDrawable()
- setImageBitmap()
- setAlpha
- 显示隐藏:
- setGone
- setVisible
- 进度条/评分条(这两个不赘述)
- 监听器
- addOnClickListener(viewId)
- addOnLongClickListener(viewId)
- setOnItemLongClickListener(viewId, OnItemLongClickListener listener)
- setOnItemSelectedClickListener(viewId, OnItemSelectedListener listener)
- setNestView(viewId)//这个我不太懂是干嘛的
BaseQuickAdapter
整理一下常用的暴露出来的方法:
- disableLoadMoreIfNotFullPage//如果没有布满页面便禁止上拉加载更多
- setUpFetchEnable//设置启动获取
- isUpFetchEnable//是否启动获取
- setUpFetching//设置是否启动获取
- setOnLoadDataListener//设置加载数据侦听器
- setLoadDataCountPerRequest//设置每个请求的加载数据计数
- setLoadMoreView//设置加载更多的页面
- getLoadMoreViewCount//获取加载更多视图计数(返回一个或者0个)
- getLoadMoreViewPosition//获取加载更多视图的位置
- setEnableManualLoadMore//设置是否启用手动加载更多
- manuallyLoadMore//手动加载更多
- isLoading//是否在加载中
- setEnableLoadMore//设置是否启动加载更多
- setEnableRefresh//设置是否启动刷新
- setDuration//设置持续时间
- setNewData//设置新数据(并更新)
- addData(position, data)//选择位置(可为空,默认最后面),添加数据(并更新)
- remove(position)//删掉某一行数据(并更新)
- setData()addData()replaceData()//其他更新数据的方法
- clear()//清空数据(并更新)
- getHeaderLayoutCount()//获取头部布局计数(返回一个或者0个)
- getFooterLayoutCount()//获取尾部布局计数(返回一个或者0个)
- getStatusViewCount()//获取状态视图计数(返回一个或者0个)
- getItemCount()//获取子项计数(包括状态/尾部/头部视图,具体看源码吧)
- getItemViewType(position)//获取当前位置子项的类型
- notifyLoadMoreToLoading()//通知加载更多到加载
- setAutoPreLoad//设置自动预加载
- onAttachedToRecyclerView//绑定RecyclerView
- setHeaderViewAsFlow//设置头部浮动
- isHeaderViewAsFlow//头部是否浮动
- setFooterViewAsFlow//设置尾部浮动
- isFooterViewAsFlow//尾部是否浮动
- onBindViewHolder//绑定不同类型的持有者,解决不同的绑定事件(好像用不到)
- setOnItemClick()//设置子项点击事件
- setOnItemLongClick//设置子项长按事件
- getHeaderLayout//获取头部布局
- getFooterLayout//获取尾部布局
- addHeaderView//添加头部布局
- setHeaderView//设置头部布局(替换某个头部布局,如果没有头部布局则直接新建一个)
- addFooterView
- setFooterView
- removeHeaderView
- removeFooterView
- removeAllHeaderView
- removeAllFooterView
- setStatusView
- showStatus
- showLoadingAndRefreshData//显示加载并更新数据(可加参数延迟)
- manuallyRefreshData//手动更新数据(区别上一个方法就是这个方法不显示加载效果)
- openLoadAnimation//打开加载动画(可选择动画类型,也可自定义动画,也可以不传默认)
- getViewByPosition//根据位置获取视图
- expand(position,animate, shouldNotify)//展开(位置,动画,是否刷新)
- expandAll()//展开全部
- collapse//折叠
- getItemPosition//子项的位置
- hasSubItems//是否有二级子项
- isExpandable//是否可以展开
- getParentPosition//获取上级的位置
- setOnItemClickListener//设置子项点击事件
- setOnItemChildClickListener//设置子项内部控件点击事件
- setOnItemLongClickListener
- setOnItemChildLongClickListener
- onCreateViewHolderByType//按类型创建视图保持架(常用)
- 完毕!
BaseNoRefreshQuickAdapter
(字面意思就是不提供刷新)
eg:PersonIdentityAdapter.java
标签:&&,QuickAdapter,viewId,子项,获取,设置,RecyclerView,加载 来源: https://blog.csdn.net/wzj_what_why_how/article/details/111053641