【问题标题】:notifiyDataSetChanged() makes listview disappear until touchnotifyDataSetChanged() 使列表视图消失,直到触摸
【发布时间】:2014-03-15 01:13:34
【问题描述】:

我使用下面的代码来初始化和刷新 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();
}

【问题讨论】:

    标签: android listview spinner


    【解决方案1】:

    问题出在我使用的 holoeverywhere 库中的微调器。它有一个与焦点管理有关的错误,但我无法更准确地分析它。单击屏幕只是将焦点返回给列表,并且视图被刷新。

    我最终没有在那个微调器中使用 holoeverywhere。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多