Die java-Fehlermeldung.lang.IndexOutOfBoundsException: index Ungültig 0, Größe 0 ist in der Android-adapter

Ich habe einen adapter erweitert BaseAdapter in meine Tätigkeit. Im adapter habe ich die Liste der Aufzeichnungen. Wenn der Benutzer klicken Sie auf einen beliebigen Datensatz, Optionen aufgelistet sind. Diese Optionen sind "senden" und "löschen". Löschen Optionen löschen Eintrag aus Liste auswählen, und die option senden senden Datensatz zum server. Wenn senden gedrückt wird , asynctask gestartet wird. Für die delete-operation, ich benutze handler im dialog.(Ja oder Nein).

Mein problem ist, dass wenn ich drücken Sie löschen einen Datensatz, während andere Datensätze senden, die Anwendung ist abgestürzt und ich habe diese excetion;

java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
at java.util.ArrayList.get(ArrayList.java:304)
E/AndroidRuntime(25140): atandroid.widget.HeaderViewListAdapter.isEnabled(HeaderViewListAdapter.java:164)

Ich habe in der grösse viele Male, und die Größe ist nicht 0. Ich bin sicher, dass die Größe ist kein problem.

Dieser code ist von meiner delete-operation;

public class MyAdapter extends BaseAdapter{
CopyOnWriteArratList<MyObject> MyCopyonWriteArrayList;
private Handler handler;
private ListView listview;

public MyAdapter(Context context,
CopyOnWriteArratList<MyObject> MyCopyonWriteArrayList,ListView listView){
this.context = context;
this.MyCopyonWriteArrayList= MyCopyonWriteArrayList;
this.listView = listView;
 }
new Thread(new Runnable() { 
                    @Override
                    public void run() {
                //If I remove this line, app does not crash     
                            MyObject o = MyCopyonWriteArrayList.get(position);
                            o.Delete();
                            MyCopyonWriteArrayList.remove(position);

                            //Code arrive here.

                        }
                            handler.post(new Runnable() {
                                 //Code cannot arrive here
                                @Override
                                public void run() {
                                    progressDialog.dismiss();   
                                    deleteDoneListener.deleteDone();
                                }
                            });
                    }
                }).start();                                                                                                             

            } catch (Exception e) {
                e.printStackTrace();
            }

Meine asyntask ist sehr typisch.

Meine Frage ist, warum habe ich diese exception "index 0 , Größe 0"?. Diese Größe ist nicht myarraylist Größe.

Wie kann ich diesen code beheben und was ist die Quelle dieser Größe?

Auch Wenn ich asynctask statt-handler löschen, ich habe "Can' T create handler inside thread, der nicht genannt Looper.prepare()]" Ausnahme. So kann ich nicht asyntack in den dialog.

siehe diesen post stackoverflow.com/questions/8431342/...
überprüfen Sie Ihre arraylist MyCopyonWriteArrayList, verwenden logcat zu drucken, die der arraylist.
Ich habe die arraylist viele Zeit und die Größe nie 0.
Was versuchen Sie zu tun? Ich denke, der code ist nicht genug. Zum Beispiel würde ich gerne wissen, wo MyCopyonWriteArrayList definiert wird und wo Elemente eingefügt werden.
Ich bearbeitet habe, Frage ich und definiert es in der Klasse MyAdapter. Ich pass die Elemente zu MyAdapter Klasse. Bitte mich Fragen, welches Teil Sie benötigen, ich werde hinzufügen in Frage zu stellen.

InformationsquelleAutor SavasCinar | 2012-12-21

Schreibe einen Kommentar