仅限于功能新增提议,使用过程中遇到的问题可以参考https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/906
應該不算功能
但我覺得滿有用的東西
希望能加個 CHANGE LOG
在裡面寫一些個版本間的差異等等
這樣在判斷是否要進版會比較有好
希望添加一个 下拉刷新~, 最好可以让用户可以自定义, 把滑动距离,状态什么的回传出来.
下拉刷新单纯用adapter是无法实现的,推荐使用 https://github.com/anzaizai/EasyRefreshLayout
是否可以考虑一种方式,来添加RecyclerView上下多出的可拉距离, 类似于iOS UITableView的contentInset.
这个库主要是Adapter不是RecyclerView,所以不会考虑对RecyclerView做一些定制的东西
setEmptyView 开始设置有用 后来在去setEmptyView就不管用 需要从新 setAdapter才能强制显示 这样挺浪费性能的 望群主 有时间优化下 开源万岁 谢谢了
setEmptyView 开始设置有用 后来在去setEmptyView就不管用 需要从新 setAdapter才能强制显示
遇到了同样的问题,
mQuickAdapter.setEmptyView(mLoadingView); mQuickAdapter.setEmptyView(mEmptyView);
mQuickAdapter.notifyItemChanged(0);
但是mEmptyView却显示不去来,显示的仍然是mLoadingView。
getQuickAdapter().setEmptyView(mErrorView);
getQuickAdapter().notifyItemChanged(0);
mErrorView可以正常显示出来。
所以很奇怪,都是调用的setEmptyView方法,为什么1,2不可以显示,而1,3缺可以显示。请问如何解决2中的问题呢?
另一个问题是,调用空页面的逻辑块应该加上mSwipeRefreshLayout.setRefreshing(false);方法,否则刷新的动画不会消失。
需要从新 setAdapter才能强制显示
确实解决了。但是重新setAdapter确实不好,代码逻辑也有点乱。
能否在Demo中增加一个单选/多选效果展示?,多选跟单选也是比较常用的列表形式
@loganguo 由于RecyclerView缓存机制,目前只能切换两种布局
后续会优化
compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.6.1' 已经更新了 @loganguo @dyamail
@CymChad 切换多种布局的优化已经发布到2.6.1了是吗?
恩 是的,setEmptyView 可以切换多种布局
左滑出菜单
首先这是一个很棒的项目,有一个建议如下:
关于最新的loadmore(2.6.+)
看了一下,是在getItemViewType中遍历,也就是说不判断是否占满一页,这种做法对于小数据不太友好,比如说一个搜索列表,可能只返回一两个数据,用户还没滑动的时候自动去执行loadmore了,导致setnewdata之后迅速地loadend。
能否把关于loadmore的public出来,让开发者决定是否在adapter里操作还是recyclerview里操作.
@tysheng 我也遇到了这个问题。https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/541
@luoganguo 我想了个折中的办法,复写setNewData();
@Override
public void setNewData(List<T> data) {
super.setNewData(data);
setEnableLoadMore(false);
}
我的用是rxjava,加载完后 判断是否满足一页,若满足 再开启。
@Override
public void onTerminate() {
super.onTerminate();
if (mSwipeRefreshLayout != null)
mSwipeRefreshLayout.setRefreshing(false);
if (type == REFRESH) {
mRecyclerView.postDelayed(new Runnable() {
@Override
public void run() {
if ((mLayoutManager.findLastCompletelyVisibleItemPosition() + 1) != mAdapter.getItemCount()) {
mAdapter.setEnableLoadMore(true);
}
}
}, 50);
}
}
建议把 ErrorView 和 EmptyView 拆分为两个模块,根据目前提供的 API 只能反复调用 setEmptyView() 以达到效果,避免反复调用 removeAllViews 与 addView 方法
请问有暴露position的方法吗,我没找到,没有的话希望暴露一个谢谢
@BTFTUK 文档有写
是否能实现section的顶部悬浮
@jiongjiongxia https://github.com/oubowu/PinnedSectionItemDecoration
@CymChad 你推荐的https://github.com/anzaizai/EasyRefreshLayout 第三方刷新库
也有上拉加载,与BRVAH中的上拉加载用哪个兼容性好点啊?
EasyRefreshLayout可以配合adapter使用,这样业务分离更加清晰易控制
建议增加个快速滚动到指定item的方法,可以让开发者自由选择带动画或者不待动画。
@lujianzhao 快速滚动到指定item的方法 请参考此处 https://github.com/AllenCoder/Recyclerview
怎么用databinding呢
demo有源码 @dinomonster
@ittianyu 分割线是RecyclerView 单独设置的,和adapter无关。
建议 开个issue把展示图片放到专门的issue里,避免每次clone项目的时候把不必要的图片下下来,看了一下,目前大约有10m,并且github的速度又不是很稳定:)
@CymChad

@tysheng 好的后续优化,感谢建议。
@DanteAndroid 如果是view的话就可以传入自定义view,如果是layout id 的话就只能传入布局文件了。
@CymChad 我的意思是添加一個方法。又不是只要layout id的方法。。
ok @DanteAndroid 这个可以
@tysheng 已优化,感谢建议,https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/694
@DanteAndroid 这样的话需要传入2个参数
setEmptyView(int layoutResId, ViewGroup viewGroup)
@CymChad OK, 跟我说的一样。
@DanteAndroid 今天我会发一个新的版本,好了M你。
@CymChad 没必要。。就是一点微小的建议而已。辛苦啦
@CymChad 另外默认emptyView有吗?谢啦
@DanteAndroid compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.7.4' 没有
关于拖动能不能有个禁用,当我不用的时候我可以禁用即和正常的适配器一样
能不能加个更新日志说明
@akingyin1987 https://github.com/CymChad/BaseRecyclerViewAdapterHelper/releases 每次更新都有日志。
@akingyin1987 你不用的时候不设置就好了。
希望加个头部粘连的功能,类似section的例子,不过头部会置顶
@Tiannuo https://github.com/oubowu/PinnedSectionItemDecoration 配合这个库可以实现你的功能。
已经搞定了,不用的时候可以将 ItemDragAndSwipeCallback.setDragMoveFlags(0)这就OK了
@akingyin1987 感谢你的分享
adapter好像不支持diffutils的局部刷新?
@pye52 恩 是的目前没有。
@tysheng 已优化工程大小,目前整个源码下载下来,878kb。
@CymChad 在RecyclerView嵌套在ScrollView里的情况下,nofiyDataSetChange会调用onLoadMoreRequested
@roger66 https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/418 是的,机制冲突。
@CymChad 有解决办法吗?急求
@roger66 如果你一定要ScrollView嵌套的话,我建议你使用第三方的上拉。
@CymChad 好的,谢谢
viewhodler.getLayoutPosition(); 如果添加过头的话 位置会错一位 能否提供一个真实的Position的方法
@Biswangluo 原理就是头部也算一个item。你可以
holder.getLayoutPosition() - getHeaderLayoutCount()。
在上层给具体数据的时候就是这样处理的
convert(holder, mData.get(holder.getLayoutPosition() - getHeaderLayoutCount()));
长按拖动的时候,能不能给拖动的item设置一个动画效果,现在只是会震动,
这个库的功能非常强大!先赞一个。提个想法,我想应该是所有初次使用这个库的新手都会有的问题:项目的demo工程体积太大,逻辑关系纵横交叉形成了一个强耦合的大项目,但是初次接触这个库的大多数人只想快速使用其中一个或几个功能,因此若将大一统的demo分成若干以单一功能为目的的几个小demo工程会更让人易懂,更易引入到自己的项目中来。另外大一统的demo用AndroidStudio打开编译需要非常非常非常长的时间,我等了半个小时后无奈的关掉,只能一个个的打开文件看,在代码级别剔除自己不需要的功能,找到需要的功能,很麻烦。虽然分几个小demo工作量对于库开发者有很多重复的地方,但是我想是值得的。最后谢谢你们!
是否考虑出一个正式版本?确定下 调用方法名或者类名;不然有时候一个版本的更新就导致项目里其他代码也要随之改变。
建议,添加一个测滑菜单功能,很多时候会用到这个功能。
建议在BaseViewHolder的getView里面对属于复用的view加一个tag标识一下
public <T extends View> T getView(int viewId) {
View view = views.get(viewId);
if (view == null) {
view = convertView.findViewById(viewId);
views.put(viewId, view);
}
view.setTag(R.id.recycer_resue, true);
return (T) view;
}
原因是我在recycleview(A)中嵌套了recycleview(B),并且B中使用了addItemDecoration,如果B是属于复用的话就不能再调用'addItemDecoration'(这个方法效果会叠加)
@LittleHans8 恩,下次我们会优化文档。
@AndyLeeBlue 构建慢,可能是gradle版本问题,你可以把gradle配置改成你自己项目的gradle版本。
@JueShouGitHub 这个是属于item的功能,而不是adapter的功能,考虑到耦合的问题,所以没有加入。
@Joyce1991 如果加上了setTag,你会如何处理你说的问题呢?
左滑删除?像ios那样的效果
@tysheng 自动LoadMore 有别的处理方法吗
BaseMultiItemQuickAdapter 希望增加展开/折叠全部功能,很多页面的需求都是上来全部展开的,希望能考虑一下,就比如这样的展开全部效果
int addedCound;
int nextPosition = 0;
do {
addedCound = mAdapter.expand(nextPosition);
nextPosition += addedCound + 1;
} while (addedCound != 0);
2.8.6已经建议在Adapter内部持有 RecyclerView 对象了,既然这样的话,何不提供一个方法
类似
public void bindToRecyclerView(RecyclerView recyclerView) {
if (mRecyclerView != null) {
throw new RuntimeException("Don't bind twice");
}
mRecyclerView = recyclerView;
mRecyclerView.setAdapter(this);
}
在初始化的时候就持有recyclerview,
对之后的 设置empty view等一系列方法都可以免去传一个viewgroup的实例
checkNotNull();
View v = LayoutInflater.from(mRecyclerView.getContext()).inflate(R.layout.item_layout_loading, mRecyclerView, false);
setEmptyView(v);
同时建议向子类提供get recyclerview的方法
@CymChad
@tysheng 恩,不错的建议,可以的。
@qstumn 收到
希望可以集成网络图片加载(Glide、ImageLoader、picasso、fresco等)
希望添加INVISIBLE 功能
/**
* Set a view visibility to INVISIBLE
*
* @param viewId The view id.
* @return The BaseViewHolder for chaining.
*/
public BaseViewHolder setInVisible(int viewId) {
View view = getView(viewId);
view.setVisibility(View.INVISIBLE);
return this;
}
希望添加 setFocusable 、setClickable 方法
@Android-KJY 感谢你的建议,加载网络图片这一块需要开发者自己加载,因为考虑到实战项目中都有自己的图片加载库,如果封装在里面就耦合了,不能强迫所有的开发者都使用框架内置的图片加载库,所以在使用的代码块里面,我们可以看到它是通过一个getView的方法拿到imageView对象再去通过自己的常用图片加载框架去做相应的图片加载。
@Android-KJY 我们现在提供了自定义ViewHolder,你可以自定义一个然后任意添加你需要的方法,因为如果无限的添加方法,这个BaseViewHolder就会无限大。
这个issues楼层过高,加载速度慢了,我重新开个issues。
群主,啥时候能出类似手机通讯录列表的功能呀
Most helpful comment
左滑出菜单