3
過濾完成後,我使用以下代碼來過濾我的ArrayAdapter
,並呼叫setAdapter
。出於某種原因,未過濾的數據在應用過濾器之前在屏幕上閃爍。有任何想法嗎?如何防止ListView在過濾之前顯示數據
mList = getData();
Collections.sort(mList);
mAdapter = new CustomItem(getActivity(), R.layout.list_item, mList);
String filter = mSpinner1.getSelectedItem().toString();
mAdapter.getFilter().filter(filter);
mListView.setAdapter(mAdapter);
下面是我的自定義過濾器代碼:
@Override
public Filter getFilter()
{
return new Filter()
{
@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint, FilterResults results)
{
mSubItems = (ArrayList<CustomItem>)results.values;
if (results.count > 0)
{
notifyDataSetChanged();
}
else
{
notifyDataSetInvalidated();
}
}
@Override
protected FilterResults performFiltering(CharSequence constraint)
{
setFilter(constraint);
List<CustomItem> filteredResults = getFilteredResults();
FilterResults results = new FilterResults();
results.values = filteredResults;
results.count = filteredResults.size();
return results;
}
};
}
嘗試notifydatasetinvalidated,或者做你的自定義過濾器 – JanBo
我有我的自定義過濾器。我會發布該代碼。 – ashishduh