我只找到了一个类似的问题,但没有帮助我。希望你能帮忙,因为我卡住了。
这是我的自定义适配器(仅相关部分):
MyExpandableListAdapter
:
public class MyExpandableListAdapter extends BaseExpandableListAdapter {
//...
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View view, ViewGroup parent) {
ChildInfo childInfo = (ChildInfo) getChild(groupPosition, childPosition);
if (view == null) {
LayoutInflater infalInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = infalInflater.inflate(R.layout.prisustva_detaljno_child_row,
null);
}
Button delete = (Button) view.findViewById(R.id.delete);
delete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
RelativeLayout Rl = (RelativeLayout) v.getParent();
TextView id = (TextView) Rl.findViewById(R.id.id_prisustvo);
PrisustvaAdapter deleteByID = new PrisustvaAdapter(context);
deleteByID.openToWrite();
deleteByID.openToRead();
deleteByID.deleteID(id .getText().toString());
deleteByID.close();
Toast.makeText(context, "Successfully deleted!",
Toast.LENGTH_LONG).show();
}
});
// ...
return view;
}
// ...
}
就像您看到的,我在我的
ExpandableListView
每个子行中都有一个按钮。当我点击该按钮时,它会触发我的数据库中的删除过程,正如您也可以看到的那样,我必须从适配器内部执行删除操作,因为只有在那里,我才能为子行内的按钮创建单击事件。我想知道当我从数据库中删除数据时,如何刷新我的ExpandableListView
?我是否必须从适配器内部进行这样的操作?如果不是,还有什么替代方法吗?附言:如果您需要更多代码,请告诉我。
notifyDatasetChanged()
吗?因为我只是从数据库中将其删除,而不是从列表中删除。当我使用ListView时,我使用了adapter.remove()
和adapter.add()
方法,然后调用了notifyDatasetChanged()
,这很顺利,但我无法在ExpandableListView中找到解决方法。 - Aksiom