ArrayAdapter.setNotifyOnChange работает неправильно - PullRequest
2 голосов
/ 23 июля 2011

Я хочу управлять отображением моих данных 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();
    }

Вид отображается до того, как я вызову операцию фильтрации. Я вызываю метод adater.add () внутри моей ListActivity и не вызываю notifyDataSetChanged () где-либо еще.

Я крутлю здесь свои колеса. У меня нет источника для его отладки.

Когда я отлаживаю, я вижу свойство notifydatasetchanged = false, когда вызывается arrayAdapter.getView. Есть ли способ узнать, какое событие вызывает этот вызов?

1 Ответ

0 голосов
/ 23 июля 2011

пытались ли вы использовать adapter.notifyDataSetChanged () вместо notifyDataSetChanged ()?

...