根据数据库中的信息在 RecyclerView 中显示不同的 viewType?
Show different viewType in RecyclerView based on information in database?
遇到了一些障碍,想知道如何解决它,对我来说就像先有鸡还是先有蛋,需要一双新鲜的眼睛。
我有一个数据库,里面有地方的信息。我想在 RecyclerView
.
中显示所有按距离排序的地点
当只有一个 viewType
时,我实际上已经完成了这项工作。然而,这是我无法弄清楚的,我想为用户一定距离内的地方显示不同的视图。例如100米以内。
该信息在我的数据库中,所以当在 setAdapter() 上调用 getItemViewType(int position)
时,我的 CursorLoader
还没有完成提取所有信息,所以我得到一个空指针异常。
我的问题:
有没有办法让我等待我的 CursorLoader
完成然后使用我的适配器而不是空 Cursor
?当我在加载程序完成后尝试调用 .setAdapter()
时,我在日志中得到以下信息:No adapter attached; skipping layout
因为 RecyclerView
需要在创建 activity 时设置适配器.
我的 getItemViewType(position)
目前是这样的:
if (!cursor.isClosed()) {
cursor.moveToPosition(position);
}
if (cursor.getInt(2) <= 100) {
return TYPE_NEARBY;
} else {
return TYPE_NOT_NEARBY;
}
基本上我需要使用 CursorLoader
中的数据来确定 viewType
并为该单元格加载不同的视图。使用一种 ViewType 就可以了,因为我不需要检查距离,它们都是相同的视图。
感谢您提供的任何帮助!
感谢 blackbelts 的评论,最终让这个工作正常。
运行 在调试模式下完成整个过程,一切都按预期进行。我只需要确保我对 onBindViewHolder(int position)
.
中的数据做正确的事情
主要问题是因为我的 ViewHolder 中有一个 "holderId" int 与我的 viewType int 不同,所以我可能只是混淆了它们。
遇到了一些障碍,想知道如何解决它,对我来说就像先有鸡还是先有蛋,需要一双新鲜的眼睛。
我有一个数据库,里面有地方的信息。我想在 RecyclerView
.
当只有一个 viewType
时,我实际上已经完成了这项工作。然而,这是我无法弄清楚的,我想为用户一定距离内的地方显示不同的视图。例如100米以内。
该信息在我的数据库中,所以当在 setAdapter() 上调用 getItemViewType(int position)
时,我的 CursorLoader
还没有完成提取所有信息,所以我得到一个空指针异常。
我的问题:
有没有办法让我等待我的 CursorLoader
完成然后使用我的适配器而不是空 Cursor
?当我在加载程序完成后尝试调用 .setAdapter()
时,我在日志中得到以下信息:No adapter attached; skipping layout
因为 RecyclerView
需要在创建 activity 时设置适配器.
我的 getItemViewType(position)
目前是这样的:
if (!cursor.isClosed()) {
cursor.moveToPosition(position);
}
if (cursor.getInt(2) <= 100) {
return TYPE_NEARBY;
} else {
return TYPE_NOT_NEARBY;
}
基本上我需要使用 CursorLoader
中的数据来确定 viewType
并为该单元格加载不同的视图。使用一种 ViewType 就可以了,因为我不需要检查距离,它们都是相同的视图。
感谢您提供的任何帮助!
感谢 blackbelts 的评论,最终让这个工作正常。
运行 在调试模式下完成整个过程,一切都按预期进行。我只需要确保我对 onBindViewHolder(int position)
.
主要问题是因为我的 ViewHolder 中有一个 "holderId" int 与我的 viewType int 不同,所以我可能只是混淆了它们。