在Android中为SimpleCursorAdapter添加日期分隔符

时间:2011-06-27 21:29:37

标签: android listview simplecursoradapter

我在我的视图上设置了一个SimpleCursorAdapter,当我从数据库中获取数据时,它工作正常。使用ORDER BY日期DESC子句运行查询。所有行都被提取并在我的ListView中很好地显示,我正在使用adapter.setViewBinder()为项目添加一些逻辑(添加缩略图)。

代码是这样的:

// Setup the adapter
adapter = new SimpleCursorAdapter(this, R.layout.rowitem, cursor, FROM, TO);
adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
  @Override
  public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
    // Only taylor the ImageView in the adapter-list, skip everything else.
    if (view.getId() != R.id.imageItem)
      return false;

    // here goes the logic, but it's cut away due to its size

    }

    return true;
  }
});

现在我想添加更多逻辑:如果日期在两个项目之间发生变化,我想添加一个包含日期的小分隔条,如下所示:

=== DATE1 ===============
Item 1
Item 2
=== DATE2 ===============
Item 3
=== DATE3 ===============
Item 4
Item 5
Item 6
=== DATE4 ===============
Item 7

等等。但是,我不确定如何在适配器中插入新的View元素,我似乎无法在developer.android.com上找到答案。

我该如何做到这一点?

2 个答案:

答案 0 :(得分:0)

您还可以查看我开发的更强大的解决方案:http://code.google.com/p/android-section-list/。它甚至比您需要的更多(尽管更好) - 它的工作方式是它添加一个特殊的适配器包装原始的并在需要时注入节标题(在您的情况下为日期标题)。标题在列表顶部保持粘性(类似于iphone部分列表中) - 这样您就可以随时查看您所在的部分.....

您可以使用部分列表作为库 - 您只需要更改适配器以返回SectionListItem(并将日期放入部分),然后将其添加到SectionListView - 这将基本上完成工作....

答案 1 :(得分:0)

- 编辑 -

好的,这是解决此问题的简单方法:

Custom ListView with Date as SectionHeader (Used custom SimpleCursorAdapter)

---老帖子--- 我无法评论你的第一篇帖子,但我想问你是否可以更详细地解释一下如何设法获得带有日期标题的列表。 你必须迭代所有的curser-rows,或者框架提供了更好的方法吗?

我有很多项目,如果我使用while(listData.moveToNext()){进行迭代,则需要很长时间。 (我还必须从unixtime标记计算到日历,日期,到月 - Int)。