簡體   English   中英

Android從游標適配器刪除列表項

[英]Android delete list item from cursor adapter

我已經實現了CursorAdapter來顯示電話聯系人列表,它工作正常。 現在,我要在單擊上實現刪除項。但是,該項將僅從列表中刪除,而不是從電話數據庫中刪除。並且刪除功能將在CursorAdapter中實現。 嘗試過但無法做到..幫助我..

我的代碼在這里。

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);
    }
}

如果您只想從列表中刪除條目(而不是從電話簿中刪除),請確保您的適配器不會在每次觸發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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM