Android ArrayAdapter Index Out of bounds异常

时间:2011-05-11 13:37:50

标签: android

我在我的代码中使用Android ArrayAdapter,有时我会看到此错误出现

java.lang.ArrayIndexOutOfBoundsException: index=-1 length=12
at java.util.ArrayList.get(ArrayList.java:310)
at com.sample.search.AutoCompleteAdapter.getItem(AutoCompleteAdapter.java:29)

为什么索引会是-1?

我使用

填充ArrayAdapter
@Override
    public Filter getFilter() {
        Filter myFilter = new Filter() {
            @Override
            protected FilterResults performFiltering(CharSequence constraint) {
                FilterResults filterResults = new FilterResults();
                if(constraint != null) {
                    // A class that queries a web API, parses the data and returns an ArrayList<Symbol>
                    SymbolLookUp symLookUp = SymbolLookUp.getInstance();
                    try {
                        mData = symLookUp.getMatches(getContext(),constraint.toString());
                    }
                    catch(Exception e) {}
                    // Now assign the values and count to the FilterResults object
                    filterResults.values = mData;
                    filterResults.count = mData.size();
                }
                return filterResults;
            }

            @Override
            protected void publishResults(CharSequence contraint, FilterResults results) {
                if(results != null && results.count > 0) {
                    notifyDataSetChanged();
                }
                else {
                    notifyDataSetInvalidated();
                }
            }
        };
        return myFilter;
    }

我的getItem方法只是

@Override
    public String getItem(int index) {      
        return mData.get(index).getSuggestedText();     
    }

1 个答案:

答案 0 :(得分:2)

@Override
    public String getItem(int index) {   
        if(mData != null &&  mData.get(index) != null) {

        return mData.get(index).getSuggestedText();     
}
    }

修改

你没有把你的所有代码都放在一边,所以我不能确切地说你可能在mData.get(索引)中遇到问题或者没有...

但是如果你遇到mData.get(index)的问题是索引超出绑定的异常,那么试试下面的代码

@Override
        public String getItem(int index) {   
            if(mData != null &&  mData.size() >= index) {

            return mData.get(index).getSuggestedText();     
            }
        }