Android 根据数据库中的信息在RecyclerView中显示不同的视图类型?

Android 根据数据库中的信息在RecyclerView中显示不同的视图类型?,android,cursor,android-recyclerview,Android,Cursor,Android Recyclerview,遇到了一点障碍,想知道如何解决它,对我来说,这就像鸡和蛋一样,需要一双新鲜的眼睛 我有一个数据库,里面有关于这些地方的信息。我想在我的回收视图中显示按距离排序的所有位置 当只有一个视图类型时,我实际上已经完成了这项工作。然而,这是我无法理解的,我想为距离用户一定距离内的地方显示不同的视图。比如100米以内 这些信息在我的数据库中,因此当在setAdapter()上调用getItemViewType(int position)时,我的CursorLoader还没有完成所有信息的提取,因此我得到一个

遇到了一点障碍,想知道如何解决它,对我来说,这就像鸡和蛋一样,需要一双新鲜的眼睛

我有一个数据库,里面有关于这些地方的信息。我想在我的
回收视图中显示按距离排序的所有位置

当只有一个
视图类型时,我实际上已经完成了这项工作。然而,这是我无法理解的,我想为距离用户一定距离内的地方显示不同的视图。比如100米以内

这些信息在我的数据库中,因此当在setAdapter()上调用
getItemViewType(int position)
时,我的
CursorLoader
还没有完成所有信息的提取,因此我得到一个空指针异常

就我的问题:

是否有一种方法可以让我等待我的
游标加载程序完成,然后使用适配器而不使用空的
游标
?加载程序完成后,当我尝试调用
.setAdapter()
时,我在日志中得到以下信息:
未连接适配器;跳过布局
,因为创建活动时,
RecyclerView
需要设置适配器

我的
getItemViewType(position)
当前看起来如下:

if (!cursor.isClosed()) {
    cursor.moveToPosition(position);
}
if (cursor.getInt(2) <= 100) {
   return TYPE_NEARBY;
} else {
  return TYPE_NOT_NEARBY;
}
if(!cursor.isClosed()){
光标。移动位置(位置);
}

由于blackbelts的评论,if(cursor.getInt(2)最终实现了这一点

在调试模式下运行了整个过程,一切正常。我只需确保我对
onBindViewHolder(int位置)
中的数据做了正确的处理


主要的问题是因为我有一个“holderId”我的ViewHolder中的int与我的viewType int不同,所以我可能只是混淆了它们。

getItemViewType
如果返回
getItemCount
则不应调用,如果光标为空,则应为0
。只需使用断点运行它,您是对的。我通过更新onBindViewHo上的ID来实现它当它被调用时,将光标移动到位置并再次检查以更新我的viewholder。我想这是因为我在viewholder中使用了holderId,它也需要更新。