Как мне получить позицию элемента в listview, который запустил диалоговое окно

#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() .