【问题标题】:Adding a date separator for a SimpleCursorAdapter in Android在 Android 中为 SimpleCursorAdapter 添加日期分隔符
【发布时间】:2011-06-27 21:29:36
【问题描述】:

我在视图上设置了一个 SimpleCursorAdapter,当我从数据库中获取数据时它工作正常。使用 ORDER BY date 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

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

我怎样才能做到这一点?

【问题讨论】:

  • 自己解决了。我只是在行布局中添加了另一个视图,添加了一个虚拟变量来保存上次浏览的日期。如果下一个列表项中的日期相同,请将新视图的可见性设置为 GONE。
  • 我是否认为这意味着点击 DATE2 意味着您实际上是在点击项目 3?

标签: android listview simplecursoradapter


【解决方案1】:

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

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

【讨论】:

  • 看起来不错,但我在该页面上找不到可下载的源代码。
  • 这是代码库。您可以(应该)克隆存储库并从那里获取它。
【解决方案2】:

-- 编辑--

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

Custom ListView with Date as SectionHeader (Used custom SimpleCursorAdapter)

--- 旧帖 --- 我无法对你的第一篇文章发表评论,但我想问你是否可以更详细地解释一下你是如何设法得到这个带有日期标题的列表的。 您必须遍历所有光标行,还是框架提供了更好的方法?

我有很多项目,如果我使用while(listData.moveToNext()){ 进行迭代,则需要很长时间。 (我还必须计算从 unixtime stamp 到 Calendar、Date、month-Int)。

【讨论】:

    猜你喜欢
    • 2023-03-25
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    相关资源
    最近更新 更多