私のDBクラスには、カーソルを返すメソッドがあります。カーソルには、さまざまなテーブルのデータが含まれます。
public Cursor fetchFavTitles() {
return myDataBase.rawQuery("SELECT rowid as _id, title, fav FROM table1 " +
"WHERE fav = 1 UNION ALL " +
"SELECT rowid as _id, title, fav FROM table2 WHERE fav = 1 UNION ALL " +
"SELECT rowid as _id, title, fav FROM table3 WHERE fav = 1 UNION ALL " +
"SELECT rowid as _id, title, fav FROM table4 WHERE fav = 1 UNION ALL " +
"SELECT rowid as _id, title, fav FROM table5 WHERE fav = 1 UNION ALL " +
"SELECT rowid as _id, title, fav FROM table6 WHERE fav = 1", null);
}
次に、を使用して:SimpleCursorAdapter ca
にアタッチします。Cursor
ListView lv
Cursor cursor = myDbHelper.fetchTitles(c);
String[] columns = {cursor.getColumnName(1)};
int[] columnsLayouts = {R.id.item_title};
ca = new SimpleCursorAdapter(this.getBaseContext(), R.layout.items_layout, cursor,columns , columnsLayouts);
lv = getListView();
lv.setAdapter(ca);
ここで、ListViewでアイテムを選択した場合、そのアイテムIDへの参照が必要です。 アイテムが属するテーブルから他の情報を取得するIDが必要です。そして、他のアクティビティMsgViewでそれを取得します
私はこれを試しました:
アイテムがクリックされたときに渡されるIDへの参照を持っている
その値をインテントで渡すと、他のアクティビティがこの渡された値を使用して必要なデータを取得します。
lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent i = new Intent(view.getContext(), MsgView.class); i.putExtra("id", (int) id); // startActivity(i); } });
しかし、これはうまくいきませんでした。私が使用しているIDはアイテムのIDではないようです!解決策やアイデアはありますか?