-1

刪除我曾嘗試這個代碼,但是當我點擊刪除菜單上沒有數據從列表視圖失去ContextItemSelected如何刪除菜單聯繫人數據ContextItemSelected列表視圖的Android

public boolean onContextItemSelected(MenuItem item) 
    { 
     switch (item.getItemId()) 
     { 
     case DELETE_ID: 
      AdapterView.AdapterContextMenuInfo menuinfo; 
      menuinfo = (AdapterContextMenuInfo)item.getMenuInfo(); 
      int id = menuinfo.position; 
      deleteContact(id); 
      populateContactList(); 
      return true; 
     } 
     return super.onContextItemSelected(item); 
     } 


    public static boolean deleteContact(int id) { 

     Uri contactUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phone)); 
     Cursor cur = ctx.getContentResolver().query(contactUri, null, ContactsContract.Contacts._ID + "=" + id, null, null); 
     try { 
      if (cur.moveToFirst()) { 
       do { 
        if (cur.getString(cur.getColumnIndex(PhoneLookup.DISPLAY_NAME)).equalsIgnoreCase(name)) { 
         String lookupKey = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY)); 
         Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey); 
         ctx.getContentResolver().delete(uri,ContactsContract.Contacts._ID + "=" + id, null); 
         return true; 
        } 

       } while (cur.moveToNext()); 
      } 

     } catch (Exception e) { 
      System.out.println(e.getStackTrace()); 
     } 
     return false; 
    } 

有另一種方式來刪除聯繫人?

+0

「嘗試」代碼不會幫助任何人。瞭解你的概念。 – JoxTraex

回答

0

上下文項目選定值,你還必須檢查在列表視圖項上下文菜單中創建,要做到這一點,你可以寫

if(itemID == 1) 

{ 
AdapterView.AdapterContextMenuInfo menuinfo; 
menuinfo = (AdapterContextMenuInfo)item.getMenuInfo(); 

int index_id = menuinfo.position; 
deletedata(index_id); 

在index_id的你有在其上創建上下文菜單的列表視圖項,之後你可以觸發查詢方法以及你想要用數據做什麼。 :)

+0

我改變了它,但ctx變得不確定。如何定義它? – Fuji

相關問題