我有两个列表视图,分别为 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 具有焦点时,才会刷新列表视图。
更重要的是,当我调用方法进行刷新时,
listview_2
没有被刷新,然后我将焦点设置到 listview_2
上,它自己刷新了!所以,我想问的是:
如何在 Android 中同时刷新两个 listview?
更多代码:
//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
? - Fabi755updateCurPos(int currentPosition)
引起的。我只改变了mCurrentPos
的值,但是列表视图的数据绑定并没有变化,然后使用notifyDataSetChanged()
进行刷新,这可能会导致它无法工作。我会继续测试,直到问题解决,并在那里公布结果。谢谢。 - AZZupdateCurPos()
中更改了listview_2
的data
绑定,然后notifyDataSetChanged()
就起作用了!但是令我困惑的是,为什么listview_1
使用相同的代码可以刷新,而listview_2
不能。不管怎样,我很高兴我终于解决了这个问题。^_^ - AZZ