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.
ü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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur überprüfen Sie die Stellung liegt innerhalb der Bandbreite, wenn ja, löschen Sie es und nehmen Sie die änderungen wie folgt :
Jeden Fall wird es Ihnen helfen,
InformationsquelleAutor RajeshVijayakumar
Was ich Tat, war, wie, und was ich habe, sind fast die gleichen wie deine! Das könnte helfen:
War ich immer die gleiche exception beim verwenden von benutzerdefinierten adapter mit ListView. Und Ausnahme wurde ausgelöst von Android-standard-Bibliothek Klassen, nicht einmal was zu jeder Zeile von meinem code.
Ich war auch hinzufügen Header, also mein adapter war implizit verpackt von HeaderViewListAdapter.
In meinem Fall scheint das problem wenn ich das löschen der Daten von adapter.
Dachte ich, dass das problem ist, weil ListView-oder-adapter kann nicht funktionieren mit Header, aber für echtes der Grund ein anderer war.
Meine Lösung ist, um sicherzustellen, dass der adapter die Daten nie geändert, aus anderen threads, und
notifyDataSetChanged()
genannt wird von den UI-thread.So, nach Updates alles funktioniert und mein code sieht wie folgt aus:
InformationsquelleAutor B-GangsteR