[英]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.