我在我的代码中使用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();
}
答案 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();
}
}