2014-12-22 3 views
0

У меня есть ListView, который делает следующее:Как получить ListView идентификатор товара в контекстном меню

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 
    Intent i = new Intent(this, TodoDetailActivity.class); 
    Uri todoUri = Uri.parse(MyTodoContentProvider.CONTENT_URI + "/" + id); 
    i.putExtra(MyTodoContentProvider.CONTENT_ITEM_TYPE, todoUri); 
    Toast.makeText(getApplicationContext(),""+id,Toast.LENGTH_SHORT).show(); 

    startActivity(i); 
} 

Note, есть длинный идентификатор, который я использую, чтобы перейти к контент-провайдеру, чтобы открыть новый вид деятельности и отредактируйте «Todo», который связан с идентификатором.

Теперь я пытаюсь удалить «todo» через контекстное меню.

Однако, я не знаю, как получить идентификатор товара:

this.getListView().setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() { 
     @Override 
     public void onItemCheckedStateChanged(ActionMode actionMode, int i, long l, boolean b) { 
      //Not Used 
     } 

     @Override 
     public boolean onCreateActionMode(ActionMode actionMode, Menu menu) { 
      MenuInflater inflater = actionMode.getMenuInflater(); 
      inflater.inflate(R.menu.context_menu, menu); 
      return true; 
     } 

     @Override 
     public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) { 
      return false; 
     } 

     @Override 
     public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) { 
      switch (menuItem.getItemId()) { 
       case R.id.menu_delete_multiple: 
        for (int i = adapter.getCount() - 1; i >= 0; i--) { 
         if (getListView().isItemChecked(i)) { 
          Toast.makeText(getApplicationContext(),""+i,Toast.LENGTH_SHORT).show(); 
          AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuItem.getMenuInfo(); 
          Uri uri = Uri.parse(MyTodoContentProvider.CONTENT_URI+"/"+ what'sTHEIDE???); 
          getContentResolver().delete(uri, null, null); 
         } 
        } 
        fillData(); 
        actionMode.finish(); // Action picked, so close the CAB 
        return true; 
       default: 
        return false; 
      } 
     } 

     @Override 
     public void onDestroyActionMode(ActionMode actionMode) { 
      actionMode = null; 
     } 
    }); 

В моей onActionItemClicked() области, я предположил бы, что я мог бы получить тот же самый «длинный» идентификатор из списка. Что мне нужно вызвать, чтобы передать идентификатор в onActionItemClicked()?

Как начинающий программист-программист, я немного ошеломлен.

ответ

0

Оказывается, я переусердствовал.

long mId = getListView().getAdapter().getItemId(i); 
Uri uri = Uri.parse(MyTodoContentProvider.CONTENT_URI+"/"+ mId); 
getContentResolver().delete(uri, null, null); 

Не требуется сложных методов AdapterView. info.id продолжал возвращать null, поскольку информация была нулевой, поэтому я просто получил идентификатор элемента просмотра списка, который был нажат, и передал его обработчику содержимого для обработки.

Смежные вопросы