のアイテムの ID が必要onContextItemSelected()
です。次のコードを使用します。
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
if (v.getId()==R.id.listView1) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo;
menu.setHeaderTitle("Optionen");
menu.add(Menu.NONE, info.position, 0, "Artikel entfernen");
}
}
@Override
public boolean onContextItemSelected(MenuItem item) {
final ListView lv = (ListView)findViewById(R.id.listView1);
Toast.makeText(getApplicationContext(), lv.getItemAtPosition(item.getItemId()).toString(), Toast.LENGTH_LONG).show();
return true;
}
varを!info.position
で読み取ることができませんでした。アプリは次のログでクラッシュしました: String empty。あなたは間違いを見つけることができますか?ありがとう!onContextItemSelected
item.getItemId
更新 コードを次のように変更しました。
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
if (v.getId()==R.id.listView1) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo;
menu.setHeaderTitle("Optionen");
menu.add(Menu.NONE, info.position, 0, "delete post");
}
}
@Override
public boolean onContextItemSelected(MenuItem item) {
final ListView lv = (ListView)findViewById(R.id.listView1);
//lv.getItemAtPosition(0).toString()
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
Toast.makeText(getApplicationContext(), info.position, Toast.LENGTH_LONG).show();
//Toast.makeText(getApplicationContext(), lv.getItemAtPosition(item.getItemId()).toString(), Toast.LENGTH_LONG).show();
return true;
}
しかし、このコードも機能しません (NotFoundException)。アイテムを含むリストビュー (R.id.listView1) があります。ユーザーが項目を長くクリックすると、コンテキスト メニューが表示されます。「投稿を削除する」オプションがあります。次に、投稿を削除するには、投稿の ID が必要です。
他の解決策はありますか?
UPDATE 2 私は問題を解決しました:
Toast.makeText(getApplicationContext(), lv.getItemAtPosition(info.position).toString(), Toast.LENGTH_LONG).show();