我在我的应用程序中使用自定义列表视图。在所有行的自定义列表视图中,我放置了一个图像按钮。如果我单击该图像按钮,我必须删除自定义列表视图中的单击按钮行。谁能告诉我怎么做?以下编码不起作用:
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);
}
由于
答案 0 :(得分:0)
您需要从基础Adapter
中删除数据。如果操作正确,则会自动更新ListView
。否则,也请在notifyDataSetChanged()
上致电Adapter
,这将导致ListView
更新。
答案 1 :(得分:0)
我一直在寻找这个答案太久了 - 非常感谢你。 从数据库中删除记录后:
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;
}