
可展开二级列表:
1.List<Object>
用Object类型是为了把不同数据都装进一个list中。将传入的数据和显示的数据分开,维护一个显示数据列表,展开就
添加item,收起就移除item,这样添加和移除可以利用RecyclerView的默认动画。
2.局部控件刷新
onBindViewHolder(RecyclerView.ViewHolder holder, int position, List<Object> payloads)
notifyItemRangeChanged(int positionStart, int itemCount, Object payload)
如果payload传一个不为null的参数,就可以实现对列表项中的具体控件更新。可以在RecyclerView Adapter中,使用
像notifyItemChanged带payload参数的方法,以及重写带payload参数的onBindViewHolder方法,在onBindViewHolder中刷新需要更新的控件即可。
空态显示:
1.创建一个继承RecyclerView的类。
2.通过getRootView().addView(emptyView)将空数据时显示的View添加到当前View的层次结构中。
3.通过AdapterDataObserver监听RecyclerView的数据变化,如果adapter为空,那么隐藏RecyclerView,显示EmptyView。
用法一:
View inflate = LayoutInflater.from(this).inflate(R.layout.view_empty_status, null, false); //root为null
recyclerView.setEmptyView(inflate);
recyclerView.setAdapter(...);
用法二:
View inflate = View.inflate(this, R.layout.view_empty_status, null); //root为null
recyclerView.setEmptyView(inflate);
recyclerView.setAdapter(...);
用法三:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:context=".EmptyShowThreeActivity">
<com.example.qexpandablerecyclerview.view.QRecyclerViewEmptySupport
android:id="@+id/empty_and_expandable_rv"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<include
android:id="@+id/empty_status"
layout="@layout/view_empty_status" />
</LinearLayout>
recyclerView.setEmptyView(findViewById(R.id.empty_status));
recyclerView.setAdapter(...);
源码地址
本文介绍如何使用List<Object>统一管理不同类型的数据,并实现RecyclerView的局部刷新,同时提供多种空态显示的方法,便于开发者快速实现复杂的列表视图。
799

被折叠的 条评论
为什么被折叠?



