コンテキストメニューを操作できるように、IDの代わりにカーソルの現在のレコードを取得したいとします。カーソルからContextMenuへデータを取得する方法
私はIDを取得する方法を示します、この例hereを見ました:
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case DELETE_ID:
AdapterView.AdapterContextMenuInfo info=
(AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
delete(info.id);
return(true);
}
return(super.onOptionsItemSelected(item));
}
それは私が私が書くことができるようになりますクリックコンテキストメニューの適切なSQLiteデータベースのIDを取得することができますので、これは素晴らしいです検索を行う関数。しかし、確かに私は現在のカーソルを再利用できますか?
私はこれをやってみました:
Cursor c = (Cursor) this.getListAdapter().getItem((int) info.id);
String itemPriority = c.getInt(1);
Log.v(TAG, "Current item:" + itemPriority);
が、カーソル行だけでデータベースのスキーマの代わりに、私は後だレコードを返すように思えます。
誰かに光をあててください。
編集:@ azgolferのおかげで解決策が見つかりました。私は、fillData()メソッドを使用してアダプタを生成します。通常これは変数なしで宣言されます。フィールド変数を使ってこのメソッドを再定義する必要がありました。 onContextItemSelectedでcurstorアダプタが表示されるようにするコードの関連部分はここにある:
private void fillData() {
Cursor itemsCursor = mDbHelper.fetchAllItemsFilter(mListId, mStatusFilter);
startManagingCursor(itemsCursor);
mItemAdaptor = new ItemAdapter(this, itemsCursor);
this.setListAdapter(mItemAdaptor);
}
あなたは再利用とはどういう意味ですか
まず、ユーザーが押されたものの位置を決定しますか?そして、 'c.getInt(1)'は、そのカーソル行のインデックス1を取得しています。だから、 'c.getString(2)'のように、そのカーソル行の他のインデックスからレコードを取得するだけです。あなたが何か他のことをしようとしていない限り。 – Andy
申し訳ありません私は仕事の再利用は "使用する"と思う。ただし、カーソルはデータを返さず、スキーマだけを返します。 –
'itemPriority'に表示されているものを印刷してください。 – Andy