2013-06-06 26 views
0

選擇項目時,我從微調第一次選擇每一件事情是好當選擇第二次都好 但在這之後,當從中選擇,它表明錯誤ArrayIndexOutOfBoundsException:length = 20;指數= 20時,從微調

E/AndroidRuntime(10594) :java.lang.ArrayIndexOutOfBoundsException:length = 20; index = 20

public static ArrayList<String> s=new ArrayList<String>(); 

for(........ 
s.add(e.child(2).text()); 
            } 

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 
    try{ 
     editPrice.setText(""+Splash.s.get(pos)); 
    }catch (Exception e) { 
     Toast.makeText(parent.getContext(),"The country is "+pos, Toast.LENGTH_LONG).show(); 
    } 
} 
+1

Java數組從'0'索引,所以'20-th'元素索引爲'19'。 – Andremoniy

+0

支持更多的代碼並正確格式化,然後我們可以幫助您獲得更準確的答案。 – AlexS

回答

2

爪哇索引從0開始。因此,如果陣列具有元件,其索引是從0

就拿例子此字符串數組:如果你想例如「C」回來,你將與2號取回索引

Values: A, B, C, D, E  - length: 5 
Indexes: 0, 1, 2, 3, 4 

String valueInFIRSTposition= stringArray.get(0); //stringArray[0] for arrays 
String valueInSECONDposition= stringArray.get(1); //stringArray[1] for arrays 
... 
String valueInLASTposition= stringArray.get(stringArray.size()-1); //stringArray[stringArray.length-1] for array 

所以:寫作時

String valueInThirdPosition= stringArray.get(2); //stringArray[2] for arrays 

而且,一個for循環遍歷一個數組,它看起來像這樣:

for (int i=0; i<array.size(); i++) { 
    Object value= array.get(i); 
} 

所以第一個索引是,要取第一個數組的元素。在for循環的中間部分(i<array.size(0)),條件是 for循環結束時,您會看到它結束了之前的最後一個索引 - 出於上述原因。

+0

public void onItemSelected(AdapterView parent,View view,int pos, long id) spinner從pos開始的位置也爲0 –

0

錯誤是說您試圖訪問包含20個元素的數組的第21個元素(索引20)。

您必須糾正您的代碼,以免發生這種情況。

+0

該陣列有20個項目 - 0至19 我怎麼能讓我嘗試pos-1我得到錯誤 editPrice.setText(「」+ Splash.s.get(pos)); –

0
Here is sample example for spinner 

final Spinner spinner = (Spinner) findViewById(R.id.spinner_experience); 
     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
       this, R.array.experience_array, android.R.layout.simple_spinner_item); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinner.setAdapter(adapter); 


     spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { 
       Object test = spinner.getSelectedItem(); 
       Toast.makeText(AlbumsActivity.this, "The planet is " + 
         spinner.getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show(); 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parentView) { 
       // your code here 
      } 

     });