我有这堂课:
public class MyAdapter extends BaseAdapter implements Filterable
并覆盖此方法
@Override
public Filter getFilter()
{
return new Filter()
{
@Override
protected FilterResults performFiltering(CharSequence charSequence)
{
FilterResults results = new FilterResults();
if(charSequence == null || charSequence.length() == 0)
{
results.values = originalData;
results.count = originalData.size();
}
else
{
ArrayList<Map<String,String>> filterResultsData = new ArrayList<Map<String,String>>();
results.values = filterResultsData;
results.count = filterResultsData.size();
}
return results;
}
@Override
protected void publishResults(CharSequence charSequence, FilterResults filterResults)
{
filteredData = (ArrayList<Map<String,String>>)filterResults.values;
if (filterResults.count > 0) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}
};
}
正如您在上面的代码中所看到的,在 performFiltering 方法中,在 else 块中,我没有做任何事情来填充filterResultsData。为什么?因为如果我进行任何操作,当我尝试过滤列表视图时,它会导致应用程序崩溃。
意味着,一切都很好,我可以在模拟器中运行应用程序,列表视图出现,但只要我在文本框中键入一个单词(进行过滤),应用程序就会崩溃。 (控制台上没有错误代码或任何其他消息)
请帮忙。我不知道出了什么问题。