0

私は SQLite データベースで動作する小さなアプリに取り組んでいます...優先度に応じて画像 (緑、黄、または赤) を表示しています。私には3つの優先度(高、中、低...)があり、次のようにそれらのカーソルを取得しています:

cursorh = dbAdapter.fetchAllHighPrio();
cursorm = dbAdapter.fetchAllMedPrio();
cursorl = dbAdapter.fetchAllLowPrio();

次に、次のような他のものを呼び出しています。

startManagingCursor(cursorh);
startManagingCursor(cursorm);
startManagingCursor(cursorl);

String[] from = new String[] { TodoDbAdapter.KEY_SUMMARY };
int[] to = new int[] { R.id.label };

SimpleCursorAdapter noteh = new SimpleCursorAdapter(this,
        R.layout.todo_row_high, cursorh, from, to);
SimpleCursorAdapter notem = new SimpleCursorAdapter(this,
        R.layout.todo_row_med, cursorm, from, to);
SimpleCursorAdapter notel = new SimpleCursorAdapter(this,
        R.layout.todo_row_low, cursorl, from, to);

それで、リストに表示する準備がすべて整いました...しかし、setListAdapterを使用すると、そのうちの1つしか使用できません。カーソルが異なる 3 つの異なるレイアウトがあるため、これを行うのは非常に困難です。これら 3 つの SimpleCursorAdapter をすべてリストに表示するにはどうすればよいですか?

編集:多分私は十分に明確ではなかった...このデータはすべて1つのテーブルにしかありません...しかし、3つの異なるレイアウトがあるため(優先度の色が異なるため)、それらを個別に追加する必要があります...または何かありますか?優先度が「高」の場合、この画像をレイアウトに配置すると、SimpleCursorAdapter が 1 つだけ必要になります。

4

2 に答える 2

0

3 つのテーブルすべてのデータ + 追加の列を組み合わせて、データがどのテーブルから来たかを示すVIEWを作成できます。次に、それからクエリを実行し、適切な行Viewを custom に返しますCursorAdapter

于 2011-05-15T20:37:23.190 に答える
0

私の知る限り、ListView に複数のアダプターを接続することはできません。残念ながら、これには少し異なる方法でアプローチする必要があるかもしれません。

  1. 1 つのアダプターに固執し、データベース クエリで並べ替えが正しいことを確認できます。
  2. 1 つのアダプターを作成し、各カーソルをループして、その 1 つのアダプターに項目を追加することができます (おそらく、カーソル アダプターではなく、ArrayAdapter に似ています)。
  3. おそらく、3 つの ListView がそれぞれ 1 に重み付けされたLinearLayoutを使用し、一度に 3 つの個別にスクロールするリストを画面上に表示できます...

アプリケーションを実際にどのように機能させたいかによって、いくつかの異なるアプローチが考えられます。

于 2011-05-15T18:52:23.887 に答える