#android #listview #dialog
#Android #listview #диалоговое окно
Вопрос:
Я получил listview, и элементы в этом listview могут запускать contextmenu. После этого я могу получить позицию элемента, который вызвал contextmenu. (это работает)
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater m = getMenuInflater();
switch(v.getId()){
case R.id.listview: m.inflate(R.menu.series_contextmenu, menu);
break;
default: break;
}
}
В этом контекстном меню я запускаю диалоговое окно. Но когда я запускаю диалоговое окно, я не знаю, как я получаю позицию элемента в listview, который запустил диалоговое окно.
public boolean onContextItemSelected(MenuItem item) {
int position = 0;
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
position = (int) info.id;
switch(item.getItemId()){
case R.id.deleteSeries:
seriesList.remove(position);
listviewadapter.notifyDataSetChanged();
return true;
case R.id.changeSeriesName: showDialog(CHANGE_SERIESNAME_DIALOG);
// cannot continue here after dialog.dismiss()
return true;
}
return super.onContextItemSelected(item);
}
После того, как я закрою диалоговое окно, я хочу изменить имя элемента в ListView. Я могу получить текст из элемента (EditText), но я не знаю, куда продолжить после закрытия диалогового окна.
Ответ №1:
Сохраните позицию в переменной где-нибудь, либо на уровне активности, либо внутри диалогового окна (используя пользовательский диалог). Затем используйте эту переменную при вызове dismiss .
Комментарии:
1. У меня возникла та же идея (но где мне продолжить в моем коде после закрытия диалогового окна)?
2. Вы устанавливаете OnDismissListener с помощью setOnDismissListener() .