android - 在第一个 viewType 上收到 DiffUtil 有效负载数据,但我需要第二个 Viewtype
问题描述
我在带有 DiffUtil 的 RecyclerView 适配器自定义类中使用了两个 viewType。
在那我更新数据它将更新 Diffutil getChangePayload但它会更新第一个视图类型。
如何将有效负载数据更改为TYPE_ITEM viewType?
> **CustomViewAdapter class**
private static final int TYPE_HEADER = 0;
private static final int TYPE_ITEM = 1;
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_ITEM) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.home_list_items, parent, false);
return new MyViewHolder(itemView);
} else if (viewType == TYPE_HEADER) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.home_banner, parent, false);
return new HeaderView(itemView);
}
return null;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position, @NonNull List<Object> payloads) {
Log.d(TAG, "onBindViewHolder: viewholder " + viewHolder);
Log.d(TAG, "onBindViewHolder: payload " + payloads);
}
解决方案
For your specific case where you have 2 types of items listed below each other (not mixed), I recommend to use the ConcatAdapter
from the RecyclerView package:
https://developer.android.com/reference/androidx/recyclerview/widget/ConcatAdapter
It allows you to connect 2 normal ViewAdapters - for each type one separate adapter. This keeps your codebase a lot cleaner and maintainable.
This is a short example how to use it:
MyAdapter adapter1 = ...;
AnotherAdapter adapter2 = ...;
ConcatAdapter concatenated = new ConcatAdapter(adapter1, adapter2);
recyclerView.setAdapter(concatenated);
推荐阅读
- r - R - ggplot 将二进制标志变量 (0/1) 随时间的分布显示为标准化条形图 (%)
- python - View.py 不会得到 ajax 但我可以通过直接在 URL 中传递 JSON 来更新数据库,Django
- python - Flask SQLAlchemy 无法在 venv 中设置属性错误
- javascript - 如何使用 socket.io JavaScript 库在 Angular 和 Express.js 之间建立单一连接
- powerbi - 自动导出 PowerBi 可视化数据?
- pytorch - 具有不同时间步长的 PyTorch LSTM
- multithreading - Flutter 中哪里可以定义 Isolate?如何在 Flutter 中启动线程?
- arrays - 使用嵌套循环多次重复一个函数
- android - AVD 的模拟器进程被杀死
- swift - 发送图像后如何修复 UI 聊天表格视图