根据数据库中的信息在RecyclerView中显示不同的viewType?

时间:2016-04-12 12:16:37

标签: android cursor android-recyclerview

打了一个路障,想知道怎么解决它,看起来像鸡蛋和鸡蛋对我来说,可以用一双新鲜的眼睛。

我有一个数据库,其中包含有关其中的地点的信息。我希望在我的RecyclerView中显示按距离排序的所有地点。

当只有viewType时,我已经实现了这一点。然而,这是我无法弄清楚的,我想为与用户保持一定距离的地方显示不同的视图。所以在100米以内。例如。

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

我的问题:

有没有办法等我的CursorLoader完成然后使用我的适配器而不是空Cursor?当我在加载器完成后尝试调用.setAdapter()时,我在日志中得到以下内容:No adapter attached; skipping layout因为RecyclerView需要在创建活动时设置适配器。

我的getItemViewType(position)目前看起来像这样:

if (!cursor.isClosed()) {
    cursor.moveToPosition(position);
}
if (cursor.getInt(2) <= 100) {
   return TYPE_NEARBY;
} else {
  return TYPE_NOT_NEARBY;
}

基本上我需要使用CursorLoader中的数据来确定viewType并为该单元格加载不同的视图。使用一个ViewType它可以工作,因为我不需要检查距离,它们都是相同的视图。

感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:0)

由于blackbelts评论,最终得到了这个工作。

在调试模式下完成整个过程,一切都按预期工作。我只需要确保我使用onBindViewHolder(int position)中的数据做正确的事情。

主要问题是因为我有一个&#34; holderId&#34;我的ViewHolder中的int与我的viewType int不同,所以我可能只是把它们搞糊涂了。