未聚焦时更新ListView片段

时间:2012-12-03 17:09:44

标签: java android android-fragments android-listfragment

我正在使用左侧是ListView片段的平板电脑应用程序,以及右侧的一些其他视图,包括SearchView(本质上是一个TextView)。当SearchView聚焦时,我想更新列表视图的数据,但我不能。如果我在UI线程上 notifyDataSetChanged ,则没有任何反应。如果我在列表视图中再次调用 setAdapter(),则列表视图将变为空白。

只有当我再次触摸列表视图时(它会再次获得临时焦点或者导致在适配器上调用getView())才会更新。

任何人都知道如何解决这个问题?

Min-Sdk和Target是4.0.3。

4 个答案:

答案 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();
    }
});