notifiyDataSetChanged()使listview消失直到触摸

时间:2014-01-22 12:27:39

标签: android listview spinner

我使用下面的代码初始化和刷新ListView。当加载片段并且第一次调用该函数时,listview将填充没有问题。现在,如果我再次调用相同的函数,listview将消失,只有当我开始滚动,触摸屏幕或旋转设备等时才会重新显示新数据...我还尝试在UI线程上调用该函数没有成功。这个函数是从Spinner.OnItemSelectedListener调用的。

private void setList() {
    ArrayList<Message> list = new ArrayList<Message>();

    SaxFeedParser sfp;
    List<Message> messages = new ArrayList<Message>();

    switch (mSpinner.getSelectedItemPosition()) {
    case 0:
        sfp = new SaxFeedParser(1);
        messages = sfp.parse();
        sfp = new SaxFeedParser(2);
        messages.addAll(sfp.parse());
        break;
    case 1:
        sfp = new SaxFeedParser(1);
        messages = sfp.parse();
        break;
    case 2:
        sfp = new SaxFeedParser(2);
        messages = sfp.parse();
        break;
    }

    for (int i = 0; i < messages.size(); i++) {
        list.add(messages.get(i));
    }

    mAdapter = new ListAdapter(this,
            android.R.layout.simple_list_item_1, list,
            (MainActivity) getActivity());
    mList.setAdapter(mAdapter);
    mAdapter.notifyDataSetChanged();
    mList.invalidateViews();
}

1 个答案:

答案 0 :(得分:0)

问题在于我使用的holoeverywhere库中的微调器。它有一个与焦点管理有关的错误,但我无法更精确地分析它。点击屏幕,只需将焦点返回到列表中,视图就会刷新。

我最终没有为那个旋转器使用holoeverywhere。