donkingliang / GroupedRecyclerViewAdapter

GroupedRecyclerViewAdapter可以很方便的实现RecyclerView的分组显示,并且每个组都可以包含组头、组尾和子项;可以方便实现多种Type类型的列表,可以实现如QQ联系人的列表一样的列表展开收起功能,还可以实现头部悬浮吸顶功能等。
Apache License 2.0
1.65k stars 216 forks source link

不支持child局部刷新 #57

Closed llfnqt closed 4 years ago

llfnqt commented 4 years ago

可以支持一下child局部刷新吗?现在只支持整个item刷新的

donkingliang commented 4 years ago

支持刷新指定的item啊,库里面提供了一系列的notifyxxxChanged方法可用的,可是刷新指定的子item、头尾、指定个数的组或者子item。

如果你说的child局部刷新是指item里的某个子view,那就是RV本身就不支持这样刷新的。

llfnqt commented 4 years ago

能不能实现一下这个方法呀 public abstract void onBindChildViewHolder(BaseViewHolder holder,int groupPosition, int childPosition, List payloads);, 让我们可以自定义刷新某个子view

donkingliang commented 4 years ago

其实你可以在你自己的adapter复写onBindViewHolder(RecyclerView.ViewHolder holder, int position, List payloads)方法的,通过position可以计算groupPosition和childPosition,然后做你想做的事情。比如下面这样: @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position, List payloads) { if (payloads == null || payloads.isEmpty()){ super.onBindViewHolder(holder,position); } else { int groupPosition = getGroupPositionForPosition(position); int childPosition = getChildPositionForPosition(groupPosition,position); if (groupPosition != -1 && childPosition != -1){ // 做你想做的事情 } } }

llfnqt commented 4 years ago

我重写了这个GroupedRecyclerViewAdapter,但是super.onBindViewHolder(holder,position);会报错呢,报这个Abstract method 'onBindViewHolder(VH, int)' cannot be accessed directly

donkingliang commented 4 years ago

你是在GroupedRecyclerViewAdapter类复写还是在它的子类复写。如果是改它的类,就不用带super,因为它的super是抽象类。

llfnqt commented 4 years ago

谢谢指导,我终于解决了,搞了好久

llfnqt commented 4 years ago

求助,我复写之后,吸顶效果没有了,放开之后就正常有了,不知道什么问题

llfnqt commented 4 years ago

求助,我复写之后,吸顶效果没有了,放开之后就正常有了,不知道什么问题

原来是吸顶这个 类 StickyHeaderLayout 里面做了判断,必须是GroupedRecyclerViewAdapter才行,我也重写了StickyHeaderLayout 就可以了