2011-05-11 130 views
0

的Android的ArrayAdapter Indexout我使用的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?

我填充使用

@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方法一個ArrayAdapter簡直是

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

檢查你的代碼的邏輯,因爲我敢肯定,有時會遇到索引超出數組範圍的情況。 – necixy 2011-05-11 13:42:08

+0

@prasant我得到這個錯誤,但不能跟蹤。你能幫助我嗎? – 2016-05-31 12:05:34

回答

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

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

編輯

你還沒有把你的所有代碼,所以我不能確切地說,你可能會遇到問題在mData.get(指數)或不..

但是,如果你面對mData.get(指數)的問題是指數走出界外的,然後嘗試下面的代碼

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

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

不會將mData.get(index)放入if子句中,導致Arrayindex再次出現界限異常嗎? – prashant 2011-05-11 13:49:40

+0

ou沒有把你的所有代碼,所以我不能完全說你可能會面臨mData.get(索引)的問題或不..但如果你面臨的問題,那麼你可以檢查使用以上編輯代碼 – Dharmendra 2011-05-12 03:37:46

+0

@prasrob我認爲你的「 mData「varable沒有元素 – Dharmendra 2011-05-12 04:01:47