2013年7月22日月曜日

[Android] Cursorに行をマニュアルで追加

MatrixCursor、MergeCursorを以下のように使うと、Cursorにマニュアルで行を追加することができます。

def onLoadFinished(loader: Loader[Cursor], cursor: Cursor) {
  val matrixCursor = new MatrixCursor(Array("_id", "category_id", "name"))
  matrixCursor.addRow(Array[AnyRef]("-1", "all", "All"))
  val mergeCursor = new MergeCursor(Array[Cursor](matrixCursor, cursor))
  adapter.swapCursor(mergeCursor)
}

MatrixCursorはマニュアルでCursorのデータを作成するCursorです。
コンストラクタでテーブルのカラムを定義し、addRowで実際のデータを挿入します。

MergeCursorは文字通りコンストラクタに渡した複数のCursorが持つデータを全て1つのCursorにマージしたCursorです。

上の例はDBから取得したcategory一覧に加えてallというデフォルトのカテゴリを追加する際に使用しています。

0 件のコメント:

コメントを投稿