自定义筛选在getView()中抛出Null Pointer异常。即使在完成所有必要的空检查之后

时间:2014-09-25 12:44:31

标签: android filtering autocompletetextview

在我获得并发修改例外之前。我通过创建一个新的arraylist来避免它。但是,现在我得到一个Null指针异常&奇怪的是,我已经完成了所有必要的空检查。我仍然不明白可能出现的问题。

这是我的publishResults()方法:

@Override
        protected FilterResults performFiltering(CharSequence constraint) {
            if (constraint != null) {
                mSuggestions.clear();
                for (Item item : mItemsAll) {
                    try {
                        if (item.name.toLowerCase(Locale.US).startsWith(constraint.toString().toLowerCase(Locale.US))) {
                            mSuggestions.add(item);
                        }
                    } catch (Exception ex) {
                    }
                }
                FilterResults filterResults = new FilterResults();
                filterResults.values = mSuggestions;
                filterResults.count = mSuggestions.size();
                return filterResults;
            } else {
                return new FilterResults();
            }
        }

这里mItemsAll保存给予适配器的mainList的副本

@Override
        protected void publishResults(CharSequence constraint, FilterResults results) {
            @SuppressWarnings("unchecked")
            ArrayList<Item> filteredList = (ArrayList<Item>) results.values;
            if (results != null && results.count > 0) {
                clear();
                for (Item c : filteredList) {
                    add(c);
                }
                notifyDataSetChanged();

            }
        }
    };

结果包含从`performFiltering()。

获得的过滤结果
clear()`- clears all the elements of the main list given to the adapter &  `add(c), adds the filtered list to the list.

我在这一行获得了Concurrent Modification例外:

for (Item c : filteredList) 

所以我删除了这一行: ArrayList<Item> filteredList = (ArrayList<Item>) results.values; &安培;添加了这些行

ArrayList<Item> filteredList = new ArrayList<Item>();
                filteredList.addAll((Collection<? extends Item>) results.values);

但是现在我在getview方法中得到了Null Pointer异常。但根据我的代码,它应该转到getview,只有过滤后的结果有一些值。那为什么我得到这个例外?

先谢谢..

0 个答案:

没有答案