如何在Android中同时刷新两个listview?
How to refresh two listview at one moment in Android?
我有两个列表视图,例如 listview_1
和 listview_2
。我想在 listview_1
刷新时刷新 listview_2
。
我的代码是这样的:
public void updateTwoListView() {
listview_1.getAdapter().notifyDataSetChanged();
listview_2.getAdapter().notifyDataSetChanged();
}
但是不行,listview_1
可以刷新但是listview_2
不能。
那一刻我发现 listview_1
很专注。
然后我尝试在运行方法之前将焦点设置到其他视图,它们都没有刷新。它喜欢仅在列表视图具有焦点时刷新列表视图。
另外我发现我调用方法刷新的时候,listview_2
没有,然后我设置焦点到listview_2
,自己刷新了!
所以,我想问的是:
如何在Android中同时刷新两个列表视图?
还有什么代码:
//init two listview there
public void init() {
listview_1 = (ListView)findViewById(R.id.listView1);
listview_2 = (ListView)findViewById(R.id.listView2);
adapter1 = new MyListViewAdapter(mContext);
adapter2 = new MyListViewAdapter(mContext); //I have tried use different adapter, that also didn't work.
listview_1.setAdapter(adapter1);
listView_2.setAdapter(adapter2);
}
上行代码段的真实代码是:
public void updateTwoListView(int currentPosition) {
adapter1.updateCurPos(currentPosition);
adapter2.updateCurPos(currentPosition);
}
并在 MyListViewAdapter.java 中:
public void updateCurPos(int currentPosition) {
mCurrentPos = currentPosition;
notifyDataSetChanged();
}
我会在外面调用listViewManager.updateTwoListView(1)
这样的方法来刷新。
如有任何回复,我们将不胜感激。
您已致电 listview_1
两次。只需将其中之一更改为 listview_2
,如下所示:
public void updateTwoListView() {
listview_1.getAdapter().notifyDataSetChanged();
listview_2.getAdapter().notifyDataSetChanged();
}
看来你代码的问题是你调用了getAdapter()
.
Sets the data behind this ListView. The adapter passed to this method may be wrapped by a WrapperListAdapter, depending on the ListView features currently in use. For instance, adding headers and/or footers will cause the adapter to be wrapped.
解决方案是将 Adapter
保存为 activity 中的成员变量,然后从那里调用 notifyDataSetChanged()
。
查看更多关于这个问题的答案:
我有两个列表视图,例如 listview_1
和 listview_2
。我想在 listview_1
刷新时刷新 listview_2
。
我的代码是这样的:
public void updateTwoListView() {
listview_1.getAdapter().notifyDataSetChanged();
listview_2.getAdapter().notifyDataSetChanged();
}
但是不行,listview_1
可以刷新但是listview_2
不能。
那一刻我发现 listview_1
很专注。
然后我尝试在运行方法之前将焦点设置到其他视图,它们都没有刷新。它喜欢仅在列表视图具有焦点时刷新列表视图。
另外我发现我调用方法刷新的时候,listview_2
没有,然后我设置焦点到listview_2
,自己刷新了!
所以,我想问的是:
如何在Android中同时刷新两个列表视图?
还有什么代码:
//init two listview there
public void init() {
listview_1 = (ListView)findViewById(R.id.listView1);
listview_2 = (ListView)findViewById(R.id.listView2);
adapter1 = new MyListViewAdapter(mContext);
adapter2 = new MyListViewAdapter(mContext); //I have tried use different adapter, that also didn't work.
listview_1.setAdapter(adapter1);
listView_2.setAdapter(adapter2);
}
上行代码段的真实代码是:
public void updateTwoListView(int currentPosition) {
adapter1.updateCurPos(currentPosition);
adapter2.updateCurPos(currentPosition);
}
并在 MyListViewAdapter.java 中:
public void updateCurPos(int currentPosition) {
mCurrentPos = currentPosition;
notifyDataSetChanged();
}
我会在外面调用listViewManager.updateTwoListView(1)
这样的方法来刷新。
如有任何回复,我们将不胜感激。
您已致电 listview_1
两次。只需将其中之一更改为 listview_2
,如下所示:
public void updateTwoListView() {
listview_1.getAdapter().notifyDataSetChanged();
listview_2.getAdapter().notifyDataSetChanged();
}
看来你代码的问题是你调用了getAdapter()
.
Sets the data behind this ListView. The adapter passed to this method may be wrapped by a WrapperListAdapter, depending on the ListView features currently in use. For instance, adding headers and/or footers will cause the adapter to be wrapped.
解决方案是将 Adapter
保存为 activity 中的成员变量,然后从那里调用 notifyDataSetChanged()
。
查看更多关于这个问题的答案: