我正在使用左侧是ListView片段的平板电脑应用程序,以及右侧的一些其他视图,包括SearchView(本质上是一个TextView)。当SearchView聚焦时,我想更新列表视图的数据,但我不能。如果我在UI线程上 notifyDataSetChanged ,则没有任何反应。如果我在列表视图中再次调用 setAdapter(),则列表视图将变为空白。
只有当我再次触摸列表视图时(它会再次获得临时焦点或者导致在适配器上调用getView())才会更新。
任何人都知道如何解决这个问题?
Min-Sdk和Target是4.0.3。
答案 0 :(得分:4)
您是否尝试使用runOnUiThread()
调用刷新例程?
改造对象列表,绑定到适配器的新实例,然后在 refresh 例程中再次调用notifyDataSetChanged()
和setAdapter()
答案 1 :(得分:2)
我必须使用 ViewHolder 来处理ListView中的更新。
答案 2 :(得分:2)
现在对我有用的是更新底层适配器中的数据,然后在UI线程上调用该适配器上的 notifyDataSetChanged 。
我不需要再次在listView上调用 setAdapter 。
当然我在问这个问题之前已经尝试了所有这些,所以不确定是什么让它突然开始工作。
答案 3 :(得分:0)
在runOnUiThread方法中调用它。还要将新对象添加到其中的适配器。
就像那样:
runOnUiThread(new Runnable() {
@Override
public void run() {
chatListAdapter.add(message);
chatListAdapter.notifyDataSetChanged();
}
});