5

ビューに 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;
  }
});

次に、さらにロジックを追加します。次のように、日付が 2 つの項目間で変更された場合に、日付を含む小さな区切りバーを追加します。

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

等々。ただし、アダプター内に新しい View 要素を挿入する方法がわかりません。developer.android.com で答えが見つからないようです。

どうすればこれを達成できますか?

4

2 に答える 2

0

- 編集 -

さて、この問題の簡単な解決策は次のとおりです。

Date を SectionHeader とするカスタム ListView (カスタム SimpleCursorAdapter を使用)

--- 古い投稿 --- あなたの最初の投稿にはコメントできませんでしたが、日付ヘッダーを含むこのリストを取得する方法をもう少し詳しく説明していただけないでしょうか。すべてのカーソル行を反復処理する必要がありますか、それともフレームワークによって提供されるより良い方法がありますか?

かなりの数のアイテムがあり、繰り返し処理する while(listData.moveToNext()){と時間がかかります。(また、unixtime スタンプから Calendar、Date、month-Int まで計算する必要があります)。

于 2012-05-02T16:55:43.223 に答える
0

私が開発したもう少し堅牢なソリューションを見ることもできます: http://code.google.com/p/android-section-list/。それはあなたが必要とする以上のことをします(より良いですが) - 元のものをラップし、必要に応じてセクションヘッダー(あなたの場合は日付ヘッダー)を挿入する特別なアダプターを追加する方法で機能します。ヘッダーはリストの一番上に固定されたままです (iPhone のセクション リストと同様)。これにより、現在のセクションがどれであるかを常に確認できます.....

セクション リストをライブラリとして使用できます。アダプターを変更して、SectionListItem を返すようにし (そしてセクションに日付を入れて)、それを SectionListView に追加するだけで済みます。基本的には....

于 2011-06-27T22:28:44.943 に答える