ArrayAdapter.setNotifyOnChange无法正常工作

时间:2011-07-22 22:02:41

标签: android listactivity android-arrayadapter

我想控制ListView数据的显示。我想在显示列表之前进行过滤和排序。在调用publishResults()之前以及在我进行过滤并调用publishResults()之后,列表正在刷新。

public StoreAdapter(Context context, int textViewResourceId, ArrayList<Store> items, StoresTab storeTab) {
    super(context, textViewResourceId, items);
    this.items = items;
    this.storeTab = storeTab;
    this.context = context;
    this.filter = new StoreFilter();
    imageLoader = ImageThreadLoader.getOnDiskInstance(context);
    setNotifyOnChange(false);
}

protected void publishResults(CharSequence constraint, FilterResults results) {
        // NOTE: this function is *always* called from the UI thread.
        ArrayList<Store> filtered = (ArrayList<Store>)results.values;
        clear();
        if (filtered != null)
        {
            for (int i = 0; i < filtered.size(); i++)
            {
                add(filtered.get(i));
            }
            sort(storeTab);
        }
        notifyDataSetChanged();
    }

在调用过滤器操作之前显示视图。我在ListActivity中调用了adater.add()方法,并且不在其他地方调用notifyDataSetChanged()。

我在这里转动轮子。我没有源代码来调试它。

当我调试时,我可以在调用arrayAdapter.getView时看到notifydatasetchanged属性= false。有没有办法找出哪个事件要调用它?

1 个答案:

答案 0 :(得分:0)

您是否尝试过adapter.notifyDataSetChanged()而不是notifyDataSetChanged()?