2013-08-21 127 views
1

已經有能力使用onItemLongClick方法刪除列表視圖項目,但我寧願使用浮動上下文菜單來執行此操作。使用浮動上下文菜單從列表視圖中刪除項目

下面是我目前用於浮動上下文菜單的代碼。我遵循幫助我設置它的文檔,然後嘗試搜索與我正在做的相似的示例,但無法找到任何適合的內容。

@Override 
    public void onCreateContextMenu(ContextMenu menu, View v, 
            ContextMenu.ContextMenuInfo menuInfo) { 
     super.onCreateContextMenu(menu, v, menuInfo); 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.payments_context, menu); 
    } 

    @Override 
    public boolean onContextItemSelected(MenuItem item) { 
     AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 
     switch (item.getItemId()) { 
      case R.id.edit: 

       return true; 
      case R.id.delete: 

       return true; 
      default: 
       return super.onContextItemSelected(item); 
     } 
    } 

這是我不得不刪除我的列表視圖中的項目之前,我決定改用浮動上下文菜單

public boolean onItemLongClick (AdapterView<?> parent, View view, int position, long id) 
     { 
      String temp = paymentTitle.get(position).toString(); 
      paymentTitle.remove(position); 
      paymentDate.remove(position); 
      reminderDate.remove(position); 
      reminderTime.remove(position); 
      paymentVal.remove(position); 

      mDatabase = new MOSDatabase(this); 

      SQLiteDatabase readableDB = mDatabase.getWritableDatabase(); 
      readableDB.delete("PaymentTable", "PTITLE=?", 
        new String[]{temp}); 

      aa.notifyDataSetChanged(); 

      return false; 
     } 

如果有人能告訴我如何得到這個漂浮的上下文菜單中的代碼工作我會很感激。我還沒有完成編輯方法,這是完成後我必須做的。

+0

尋找這個http://stackoverflow.com/questions/17698596/checkable-relative-layout-as-item-in-multiselect-list/17698673#17698673? – Raghunandan

回答

5

如果我理解正確的話,你可以在點擊位置通過使用下面的代碼獲得該項目的指標在ListView:

AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo; 
int position = info.position; 

使用position,您可以重用的onItemLongClick代碼相當的是:

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 
    int position = info.position; 
    switch (item.getItemId()) { 
     case R.id.edit: 

      return true; 
     case R.id.delete: { 
      String temp = paymentTitle.get(position).toString(); 
      paymentTitle.remove(position); 
      paymentDate.remove(position); 
      reminderDate.remove(position); 
      reminderTime.remove(position); 
      paymentVal.remove(position); 

      mDatabase = new MOSDatabase(this); 

      SQLiteDatabase readableDB = mDatabase.getWritableDatabase(); 
      readableDB.delete("PaymentTable", "PTITLE=?", 
        new String[]{temp}); 

      aa.notifyDataSetChanged(); 
      } 
      return true; 
     default: 
      return super.onContextItemSelected(item); 
    } 
} 

您可能想看看this問題的答案。

+0

完美工作。謝謝你的幫助! –

+0

'item.getMenuInfo()'返回空值。你能幫忙嗎? –

+0

我終於開始工作了,我使用了未實現getContextMenuInfo()方法的自定義GridView。如果有人需要樣本,我已發佈[此處](http://vinaybhargav.wordpress.com/2014/07/20/android-floating-context-menu-for-listviewgridview/)。 –

相關問題