片段内的Android ListView无需单击按钮即可刷新

时间:2014-04-09 04:22:11

标签: java android android-listview

当我调用适当的方法时,我的ListView不会刷新其内容,除非通过单击按钮调用该方法。

以下示例代码是我的测试按钮的工作方式(临时按钮检查我的刷新代码是否有问题):

testBtn.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
       exampleRefresh();
    }
});

它所谓的方法:

public void exampleRefresh() {
    exampleAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, arrayOfItems());
    exampleListView.setAdapter(exampleAdapter);
}

这很好用。

但是,如果我在switch语句中为上下文菜单调用exampleRefresh(),则不会发生任何事情。再次,当我单击测试按钮时,ListView会立即刷新。这些是调用相同的方法,我不理解这个问题。

我尝试添加nofifyDataSetChange(),但它不起作用。 ListView仅在我按下按钮时刷新。

值得注意的是,即使我在调用上下文菜单时调用该方法,它也会刷新。如果没有调用,它就不会执行任何操作,它会出现。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

你试过

吗?
exampleAdapter = new ArrayAdapter<String>();
exampleAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, arrayOfItems());
exampleListView.setAdapter(exampleAdapter);

这应该强制它清除并重新添加

答案 1 :(得分:0)

尝试从notifyDataSetChange()调用exampleListView.post(),如下所示:

exampleListView.post(new Runnable() {

    public void run() {
         exampleAdapter.notifyDatasetChange();
    }

}

答案 2 :(得分:0)

如果要更改列表中的数据,然后要刷新listview,则不要再次调用setadapter方法。只需调用以下方法:

exampleAdapter.notifyDataSetChange();