OnItemClickListener
的{{1}}具有以下方法:
ListView
我希望适配器位于@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
刷新后面,我相信这是通过以下方式完成的:
ListView
如何使用BaseAdapter.notifyDataSetChanged()
方法中的parent
参数执行此操作?到目前为止,我已经尝试过:
onItemClick
这会抛出一个错误,因为返回的对象是类parent.getAdapter().notifyDataSetChanged();
,由于原因未知,它不是HeaderViewListAdapter
的子类。
答案 0 :(得分:5)
您还可以通过自定义适配器访问BaseAdapter,如以下代码片段所示:
public class HeaderViewListAdapter extends BaseAdapter {
...
@Override
public void notifyDataSetChanged() {
super.notifyDataSetChanged();
}
...
}
答案 1 :(得分:5)
这会抛出一个错误,因为返回的对象是类 HeaderViewListAdapter,由于未知的原因不是它的子类 BaseAdapter。
((BaseAdapter) ((HeaderViewListAdapter)listView.getAdapter()).getWrappedAdapter()).notifyDataSetChanged();
答案 2 :(得分:2)
AFAIK,HeaderListView中没有任何方法可以进行数据刷新/重新加载。我能想到的唯一方法是重新分配适配器。
答案 3 :(得分:2)
使用游标时,无需调用任何方法来刷新适配器客户端。
相反,在执行任何操作后,您必须使用getContentResolver().notifyChange(uri, null);
例如:
context.getContentResolver().update(SomeURI.CONTENT_URI, values, null,null);
context.getContentResolver().notifyChange(SomeURI.CONTENT_URI, null);
即使您使用的是自定义适配器,您的viewclient (Listview, Gridview, Whatever)
也会自动更改。
希望这有帮助。
答案 4 :(得分:0)
我找到了更简单的方法..只需调用this.onCreate(null)
即可重新加载完整的创建方法,但活动保持不变。