Android:ListActivity和ArrayAdapter - 在显示List之前进行排序

时间:2011-05-07 23:31:06

标签: android multithreading

我有一个ListActivity,它有一个ArrayAdapter和一个Filter。我想填充ArrayAdapter的项目,过滤结果然后显示它们。无论出于何种原因,都会有一些花哨的线程强制显示结果而不先应用过滤器,然后过滤。所以有十分之一秒的时间你可以看到未经过滤的结果。

在ListActivity上的UI线程中运行

private Runnable returnRes = new Runnable() {

    public void run() {
        if (promotionItems != null && promotionItems.size() > 0) {
            for (int i = 0; i < promotionItems.size(); i++)
                m_adapter.add(promotionItems.get(i));
        }

        m_adapter.getFilter().filter(filterString);
        m_adapter.notifyDataSetChanged();
        m_ProgressDialog.dismiss();
    }
};

1 个答案:

答案 0 :(得分:2)

你看过ArrayAdapter.setNotifyOnChange(boolean)了吗?在这种特殊情况下,在将任何项目添加到ArrayAdapter之前,您会想要禁用此功能。