我有一个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();
}
};
答案 0 :(得分:2)
你看过ArrayAdapter.setNotifyOnChange(boolean)了吗?在这种特殊情况下,在将任何项目添加到ArrayAdapter之前,您会想要禁用此功能。