Autore Topic: IndexOutOfBoundsException in ListAdapter (metodo OnClick)  (Letto 452 volte)

Offline Andre

  • Utente junior
  • **
  • Post: 62
  • Respect: +1
    • Mostra profilo
IndexOutOfBoundsException in ListAdapter (metodo OnClick)
« il: 18 Luglio 2011, 11:19:44 CEST »
0
Ciao ragazzi,

sto provando a passare dei dati ad una nuova activity tramite intent. In particolare vorrei passare l'id di una domanda ottenuto tramite il parsing JSON. Quando clicco sul bottone per avviare la nuova activity, va in crash restituendo nel LogCat questo:

Codice: [Seleziona]
07-18 11:08:26.816: ERROR/AndroidRuntime(653): FATAL EXCEPTION: main
07-18 11:08:26.816: ERROR/AndroidRuntime(653): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.quizzle/com.android.quizzle.DatabaseActivity}: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
07-18 11:08:26.816: ERROR/AndroidRuntime(653):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
07-18 11:08:26.816: ERROR/AndroidRuntime(653):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
07-18 11:08:26.816: ERROR/AndroidRuntime(653):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
07-18 11:08:26.816: ERROR/AndroidRuntime(653):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
07-18 11:08:26.816: ERROR/AndroidRuntime(653):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-18 11:08:26.816: ERROR/AndroidRuntime(653):     at android.os.Looper.loop(Looper.java:123)
07-18 11:08:26.816: ERROR/AndroidRuntime(653):     at android.app.ActivityThread.main(ActivityThread.java:4627)
07-18 11:08:26.816: ERROR/AndroidRuntime(653):     at java.lang.reflect.Method.invokeNative(Native Method)
07-18 11:08:26.816: ERROR/AndroidRuntime(653):     at java.lang.reflect.Method.invoke(Method.java:521)
07-18 11:08:26.816: ERROR/AndroidRuntime(653):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-18 11:08:26.816: ERROR/AndroidRuntime(653):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-18 11:08:26.816: ERROR/AndroidRuntime(653):     at dalvik.system.NativeStart.main(Native Method)
07-18 11:08:26.816: ERROR/AndroidRuntime(653): Caused by: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
07-18 11:08:26.816: ERROR/AndroidRuntime(653):     at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
07-18 11:08:26.816: ERROR/AndroidRuntime(653):     at java.util.ArrayList.get(ArrayList.java:311)
07-18 11:08:26.816: ERROR/AndroidRuntime(653):     at com.android.quizzle.DatabaseActivity.onCreate(DatabaseActivity.java:157)
07-18 11:08:26.816: ERROR/AndroidRuntime(653):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-18 11:08:26.816: ERROR/AndroidRuntime(653):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
07-18 11:08:26.816: ERROR/AndroidRuntime(653):     ... 11 more


Ho notato che si tratta di un IndexOutOfBounds e non capisco perchè. Ecco il mio codice a partire dal JSON:

Codice (Java): [Seleziona]
try{
                        jArray = new JSONArray(result2); //la stringa convertita dal buffer
                        JSONObject json_data = null;
                       
            for(int i=0;i<jArray.length();i++){
                json_data = jArray.getJSONObject(i);                    
                domande=json_data.getString("domande");
                iddom=json_data.getString("id");
                strings2.add(domande);
                               
            }
                         
                }catch(JSONException e1){
                      Toast.makeText(getBaseContext(), "Nessun quiz trovato" ,
                                     Toast.LENGTH_LONG).show();
                     
                } catch (ParseException e1) {
                      e1.printStackTrace();
                }
                       
                ls1.setAdapter(new ArrayAdapter<String>(this,
                                android.R.layout.simple_list_item_1,
                                strings2));
                ls1.setTextFilterEnabled(true);
                ls1.setOnItemClickListener(new OnItemClickListener() {

                        @Override
                         public void onItemClick(AdapterView<?> a, View v, int position, long id) {
                                int x = position;
                                String valore;
                                String domanda;
                                if (x==0)
                          {
                                          valore = iddom;
                                          domanda = domande;
                                          Toast.makeText(getApplicationContext(), "L'id è :" + iddom, Toast.LENGTH_LONG).show();
                                  Intent i = new Intent();
                                  i.setClass(MainMenuActivity.this, DatabaseActivity.class);
                            i.putExtra("Id scelto: ", valore);
                            i.putExtra("La domanda scelta è: ", domanda);
                            startActivity(i);
                                 
                          }
                          if(x==1)
                          {
                                  valore = iddom;
                                  domanda = domande;
                                  Toast.makeText(getApplicationContext(), "L'id è :" + iddom, Toast.LENGTH_LONG).show();
                                  Intent i = new Intent();
                                  i.setClass(MainMenuActivity.this, DatabaseActivity.class);
                            i.putExtra("Id scelto: ", valore);
                            i.putExtra("La domanda scelta è: ", domanda);
                            startActivity(i);
                          }
                               
                        }
                        });
       
    ;
                }
       

Successivamente nell'altra activity richiamo il bundle:

Codice (Java): [Seleziona]
Bundle b = getIntent().getExtras();
         String id = b.getString("Id scelto: " );
            String domanda = b.getString("La domanda scelta è: " );

Cosa sbaglio? Grazie a tutti per il supporto.
Buona giornata.
Andre