我有一个自定义数组适配器而不是扩展ArrayAdapter,但是通常不会显示notifyDataSetChanged()方法(如果你尝试的话它不起作用)。
class matchAdapter extends ArrayAdapter<Match> {
public matchAdapter(Context context, List<Match> matches) {
super(context, R.layout.match_layout, matches);
}
@Override
public void notifyDataSetChanged() {
super.notifyDataSetChanged();
}
以上是我的适配器类。 notifyAll()会做同样的事情吗?
答案 0 :(得分:0)
我会写一个例子,它不是真正的代码,但它是你必须要做的。
创建ArrayList<matchList> matchList = new ArrayList<matchList>();
Adapter
创建adapter = new matchAdapter(this, matchList);
Adapter
设置YourListView.setAdapter(adapter);
List
您更改了matchList.add(Stuff for your list);
List
现在通知adapter.notifyDataSetChanged();
已更改:
notifyDataSetChanged()
希望对您有所帮助,如果没有,只需输入评论,我就会尝试更新我的答案。
我会给你一些例子......
如果您想拨打List.clear();
List.addAll(YourStuff);
adapter.notifyDataSetChanged();
,请执行以下操作:
AsyncTask
其他方法可能是,您正在使用onBackGround()
,因此您的onPostExecute
可以让它返回列表中的项目,然后在 @Override
protected List<matchList> doInBackground(String... params) {
List<matchList> items = loadUpdatedDataset(params);
return items;
}
@Override
protected void onPostExecute(List<matchList> itemschangeds) {
updateAdapterDataset(itemschangeds);
adapter.notifyDataSetChanged();
}
更新适配器。
示例:
{{1}}
答案 1 :(得分:0)
您的listAdapter
被声明为类型ListAdapter
,其中没有您期望的方法(notifyDataSetChanged
)。您需要至少BaseAdapter
或将其投放到BaseAdapter
(我假设您的MatchAdapter
至少是BaseAdapter
- 如果不是,那么,请将其称为((BaseAdapter)listAdapter).notifyDataSetChanged();
方法没有意义:-))
npm install <module-name>