2015-04-08 4 views
0

У меня был код ниже, который вызывает диалог, когда элемент в списке давно нажат.вызов диалогового окна подтверждения при выборе опции в контекстном меню

@Override 
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
     Projeto clickedProjeto = mAdapter.getItem(position); 
     Log.d(TAG, "longClickedItem : "+ clickedProjeto.getName()); 
     showDeleteDialogConfirmation(clickedProjeto); 
     return true; 
    } 

Теперь мне нужно вызвать тот же метод showDeleteDialogConfirmation(). Но я не знаю, как передать щелкнутый элемент в диалог.

Это контекстное меню по выбранному элементу. Мне нужно вызвать диалог в инструкции Excluir.

@Override 
    public boolean onContextItemSelected(MenuItem item){ 
     if(item.getTitle()=="Editar"){ 
      Toast.makeText(getApplicationContext(),"calling code",Toast.LENGTH_LONG).show(); 
     } 
     else if(item.getTitle()=="Excluir"){ 
      //here instead of this toast I need to call the confirmation dialog. 
      Toast.makeText(getApplicationContext(),"sending sms code",Toast.LENGTH_LONG).show(); 
     }else{ 
      return false; 
     } 
     return true; 
    } 
+0

внутри onItemLongClick: parent.getItemAtPosition (положение); –

+0

этот метод должен исчезнуть. Вы не можете реализовать длинные клики и контекстное меню, обе имеют одинаковую функциональность. Я думаю. Мне нужно вызвать и передать clickeditem в showdialog-confimation внутри метода onContextItemSelected. –

+0

не позволяют осуществлять деятельность OnLongClickListiner сделать это анонимно myList.setOnItemLongClickListener (новый OnItemLongClickListener() { \t \t \t \t \t @Override \t \t \t \t \t общественного логический onItemLongClick (AdapterView родитель, \t \t \t \t \t \t \t Просмотреть представление, int position, long id) {... –

ответ

0

решаемая. получил индекс элемента, нажатого в списке, и передал его в диалоговом окне.

@Override 
    public boolean onContextItemSelected(MenuItem item){ 
     if(item.getTitle()=="Editar"){ 
      Toast.makeText(getApplicationContext(),"calling code",Toast.LENGTH_LONG).show(); 
     } 
     else if(item.getTitle()=="Excluir"){ 
      AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 
      int index = info.position; 
      Projeto clickedProjeto = mAdapter.getItem(index); 
      showDeleteDialogConfirmation(clickedProjeto); 
     }else{ 
      return false; 
     } 
     return true; 
    } 
0

удалить:

реализует OnLongClickListener,

и добавить

myList.setOnItemLongClickListener(new OnItemLongClickListener() { 

       @Override 
       public boolean onItemLongClick(AdapterView<?> parent, 
         View view, int position, long id) { 
       Projeto clickedProjeto = (Projeto)parent.getItem(position); 
       Log.d(TAG, "longClickedItem : "+ clickedProjeto.getName()); 
       showDeleteDialogConfirmation(clickedProjeto); 
       return false; 
       } 

      }); 
Смежные вопросы