Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 自定义筛选在getView()中引发空指针异常。即使在做了所有必要的空检查之后_Android_Filtering_Autocompletetextview - Fatal编程技术网

Android 自定义筛选在getView()中引发空指针异常。即使在做了所有必要的空检查之后

Android 自定义筛选在getView()中引发空指针异常。即使在做了所有必要的空检查之后,android,filtering,autocompletetextview,Android,Filtering,Autocompletetextview,在我得到并发修改异常之前。我通过创建一个新的arraylist来避免它。但是,现在我得到了一个空指针异常&奇怪的是,我已经完成了所有必要的空检查。我仍然不明白会出什么问题 以下是我发布结果的方法: @Override protected FilterResults performFiltering(CharSequence constraint) { if (constraint != null) { mSuggestion

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

以下是我发布结果的方法:

@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();

            }
        }
    };
我在这一行得到了并发修改例外:

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

ArrayList<Item> filteredList = new ArrayList<Item>();
                filteredList.addAll((Collection<? extends Item>) results.values);
但是现在我在getview方法中得到了Null指针异常。但是根据我的代码,只有在过滤结果有一些值时,它才应该转到getview。那为什么我会得到这个例外


提前感谢。

什么是结果。价值观?clear做什么。addItem做什么?事实上,如果可以添加所涉及的整个代码结构,那会有所帮助。你能发布过滤方法吗?我猜您正在修补其中的原始适配器项。如果是这种情况,那么您要向其中添加项的集合实际上是FilterResults,这当然会导致该异常@Knossos这可能是的一个子类。这里已经回答过了:虽然这个问题的概念很常见,但这个问题的确切原因在你的链接中没有得到回答。
ArrayList<Item> filteredList = new ArrayList<Item>();
                filteredList.addAll((Collection<? extends Item>) results.values);