2014-04-26 81 views
0

我已經實現了CursorAdapter來顯示手機通訊錄,它工作正常。現在我想要在點擊時實現刪除項目。但是項目將只從列表中刪除,而不是從電話數據庫中刪除。刪除功能將在CursorAdapter中執行。嘗試,但無法做到這一點..幫助我..Android從光標適配器刪除列表項目

我的代碼是在這裏..

ImageButton remFrnd = (ImageButton) view.findViewById(R.id.remove_frnd); 
remFrnd.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View arg0) { 
     Animation fadeOut = AnimationUtils.loadAnimation(context, R.anim.request_animate); 

     fadeOut.setAnimationListener(new AnimationListener() { 

      @Override 
      public void onAnimationStart(Animation animation) {} 

      @Override 
      public void onAnimationRepeat(Animation animation) {} 

      @Override 
      public void onAnimationEnd(Animation animation) { 

       /////////////////////////////////////////////////////////////////////////// 
       //final int position = listContacts.getPositionForView((View) view.getParent()); 
       // datalist.remove(position); 
       deleteRecordWithId(itemId); 
       cursor.requery(); 
       // myAdapter.notifyDataSetChanged(); 
       ///////////////////////////////////////////////////////// 
       notifyDataSetChanged(); 
      } 
     }); 

     view.startAnimation(fadeOut); 
    } 
} 
+0

你可以發佈你的'deleteRecordWithId(itemId);'? – Meghna

+0

我正在嘗試這個..但是這是數據庫..所以他們沒有必要.. – Dhiman

+0

den發佈您的數據庫類too.fisrt得到您的列表選擇的項目,從數據庫中刪除它,並刪除整行。 – Meghna

回答

1

如果你想(從電話本中不)從列表中刪除該條目ONLY確保您的適配器不會在每次啓動時從電話簿加載數據DataSetChanged - 就像遊標適配器可能會做的那樣... 將電話簿中的數據加載到某些數據結構中,然後使用ArrayAdapter或類似的東西..

編輯:

private ListView initializeListView() { 
    ListView lv = (ListView)findViewById(R.id.listView); 
    ArrayList<Person> persons = loadPersonsFromMyChosenStorage(); 
    if(persons==null){ 
     //we haven't stored persons yet 
     persons = new ArrayList<Person>(); 
     String whereName = ContactsContract.Data.MIMETYPE + " = ?"; 
     String[] whereNameParams = new String[] { ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE }; 
     Cursor cursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, whereName, whereNameParams, ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME); 
     while (cursor.moveToNext()) { 
      String firstname = cursor.getString(cursor.getColumnIndex(
       ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME)); 
      String lastname = cursor.getString(cursor.getColumnIndex(
       ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME)); 
      if(firstname!=null&&lastname!=null){ 
       persons.add(new SimplePerson(firstname,lastname)); 
      } 
     } 
     storePersonsToMyChosenStorage(persons); 
    } 
    if(lv!=null) { 
     lv.setAdapter(new ArrayAdapter<Person>(this, android.R.layout.simple_list_item_single_choice, persons)); 
     lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
    } 
    return lv; 
} 
+0

exactly.i要這個...但有一個小問題,當我重新打開應用程序,然後它顯示所有,我想永遠從列表中刪除..plz幫助我.. – Dhiman

+0

加載您的數據一次,並堅持它(很多選項:[存儲](http://developer.android.com/guide/topics/data/data-storage.html))之後,你從那裏加載你的數據... – bgoeschi