ListView的自定义适配器,过滤问题

时间:2014-06-11 02:20:43

标签: android listview android-listview filtering

我有这堂课:

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。为什么?因为如果我进行任何操作,当我尝试过滤列表视图时,它会导致应用程序崩溃。

意味着,一切都很好,我可以在模拟器中运行应用程序,列表视图出现,但只要我在文本框中键入一个单词(进行过滤),应用程序就会崩溃。 (控制台上没有错误代码或任何其他消息)

请帮忙。我不知道出了什么问题。

0 个答案:

没有答案