#android
#Android
Вопрос:
Я использую пользовательский просмотр списка в своем приложении. В пользовательском просмотре списка во всех строках я разместил кнопку изображения. Если я нажму на эту кнопку изображения, мне придется удалить строку с нажатой кнопкой в пользовательском представлении списка. Кто-нибудь может сказать мне, как это сделать? Приведенный ниже код не работает:
imgcross=(ImageView)v.findViewById(R.id.imgcross);
imgcross.setId(position);
if(v.getId()==R.id.imgcross)
{
Log.d("image id is",Integer.toString(imgcross.getId()));
myScheduleList.removeViewAt(imgcross.getId());
Toast.makeText(MyScheduleDay0RequestedMeeting.this, "Cross Button is Clicked", Toast.LENGTH_LONG).show();
}
if (v.getId()==R.id.imgcross)
{ //Integer index=(Integer)imgcross.getTag();
//Log.d("image id is",Integer.toString(index));
int index=imgcross.getId(); (imgcross.getId());
MyScheduleBean.listName.remove(index);
MyScheduleBean.dateValue.remove(index);
MyScheduleBean.dateValue.remove(index);
CAdapter = new CustomAdapter(this,MyScheduleBean.listName,MyScheduleBean.dateValue,MyScheduleBean.meeting,R.layout.myschedule_day0_requestedmeetingrow,to);
myScheduleList.setAdapter(CAdapter);
}
Спасибо
Ответ №1:
Вам нужно удалить данные из базового Adapter
. Все сделано правильно, это автоматически обновит ListView
. В противном случае также вызовите notifyDataSetChanged()
на Adapter
, и это приведет к ListView
обновлению.
Комментарии:
1. можете ли вы рассказать, как удалить данные из базового адаптера в событии щелчка, даже если я пытался с этим
2. if(v.getId()==R.id.imgcross) { //Целочисленный индекс=(Integer)imgcross.getTag(); //Log.d («идентификатор изображения равен»,Integer.toString(index)); int index=imgcross.getId(); (imgcross.getId()); MyScheduleBean.ListName.remove(индекс); MyScheduleBean.dateValue.remove(индекс ); MyScheduleBean.dateValue.remove(индекс); CAdapter = новый CustomAdapter(this,MyScheduleBean.listName,MyScheduleBean.dateValue,MyScheduleBean.meeting,R.layout.myschedule_day0_requestedmeetingrow,to) ; myScheduleList.setAdapter(CAdapter); }
3. @mohan: Я понятия не имею, что делает любой из этих кодов. Чтобы удалить данные из
ArrayAdapter
, вызовитеremove()
наArrayAdapter
. Чтобы удалить данные изCursorAdapter
, измените базовый источник данных (например, базу данных) иrequery()
Cursor
.
Ответ №2:
Я слишком долго искал этот ответ — большое вам спасибо. После удаления записи из базы данных с:
DBRecordOperation.deleteRecord(dbRecord);
просто удалите запись из ListView с помощью:
adapter.remove(dbRecord);
Я делаю это длинным щелчком мыши в ListView. Полный код для onContextItemSelected является:
@Override
public boolean onContextItemSelected(MenuItem item){
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
DBRecord dbRecord = (DBRecord) getListAdapter().getItem(info.position);
int dbRecordId = dbRecord.getId();
DBRecordOperation.deleteRecord(dbRecord);
adapter.remove(dbRecord);
return true;
}