sqliteデータベースからデータをセットアップするlistViewを備えたアプリケーションを入手しました。私のCustomCursorAdapterは、(DBAdapterからの)データをリストビューに配置しています。選択したアイテムのアイテムIDをlistViewから取得したいのですが、次のコードで機能します。
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> listView, View view,
int position, long id) {
// Get the cursor, positioned to the corresponding row in the result set
Cursor cursor = (Cursor) listView.getItemAtPosition(position);
//Get it from the database.
String countryCode =
cursor.getString(cursor.getColumnIndex(cursor.getColumnName(0)));
Toast.makeText(getApplicationContext(),
countryCode, Toast.LENGTH_SHORT).show();
}
});
そのコードはIDを取得し、IDを確認できるトーストを作成します。これは完全に機能します。次に、アイテムを長押しするコンテキストメニューに配置します(このメソッドは開始されません)。アイテムを操作するコンテキストメニューがありますが、リストビューで選択されているアイテムのIDを取得するだけで済みます。
これがコンテキストメニューのコードです。
public boolean onContextItemSelected(MenuItem item) {
Cursor cursor = (Cursor) listView.getItemAtPosition(position);
String countryCode =
cursor.getString(cursor.getColumnIndex(cursor.getColumnName(0)));
switch (item.getItemId()) {
case CONTEXT_MENU_DELETE_ITEM:
Toast.makeText(getApplicationContext(),
countryCode, Toast.LENGTH_SHORT).show();
return(true);
case CONTEXT_MENU_UPDATE:
return(true);
}
return(super.onOptionsItemSelected(item));
}
位置変数が設定されていないため、コンテキストメニューが機能しなくなりました。選択したアイテムの入手方法が本当にわかりません。
前もって感謝します。