Я хочу управлять отображением моих данных 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. Есть ли способ узнать, какое событие вызывает этот вызов?