Erreur java.lang.IndexOutOfBoundsException: Invalid index 0, la taille est de 0 sur Android adaptateur

J'ai un adaptateur qui s'étend BaseAdapter dans mon activité. Dans l'adaptateur que j'ai la liste des enregistrements. Lorsque l'utilisateur clique sur n'importe quel enregistrement, les options sont répertoriées. Ces options sont "envoyer" et "supprimer". Supprimer les options supprimer enregistrement à partir de la liste et l'envoyer option envoyer l'enregistrement de serveur. Lorsque l'envoi est pressé , asynctask est commencé. Pour l'opération de suppression, j'utilise le gestionnaire de la boîte de dialogue.(Oui ou non).

Mon problème est que si j'appuie sur supprimer dans un enregistrement, tandis que d'autres dossiers sont à envoyer, l'application est en panne et j'ai eu cette 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)

J'ai vérifié la taille de nombreuses fois, et la taille n'est pas 0. Je suis sûr que la taille n'est pas un problème.

Ce code est à partir de mon opération de suppression;

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();
            }

Mon asyntask est très typique.

Ma question est que pourquoi j'ai eu cette exception "l'indice 0 , la taille 0"?. Cette taille n'est pas myarraylist taille.

Comment puis-je corriger ce code et quelle est la source de cette taille?

Aussi Si j'utilise asynctask au lieu de gestionnaire dans le supprimer, je l'ai eu "ne Peut pas créer de gestionnaire à l'intérieur de thread qui n'a pas appelé Looper.prepare()]" l'exception". Je ne peux donc pas mettre asyntack dans la boîte de dialogue.

voir ce post stackoverflow.com/questions/8431342/...
vérifiez votre liste de tableaux MyCopyonWriteArrayList, utilisez logcat pour imprimer la liste de tableaux.
J'ai vérifié la liste de tableaux beaucoup de temps et la taille jamais 0.
Qu'essayez-vous de faire? Je pense que ce morceau de code n'est pas assez. Par exemple, je voudrais savoir où MyCopyonWriteArrayList est défini et où les éléments sont ajoutés.
J'ai édité question et j'ai défini dans MyAdapter classe. J'ai passer les éléments de MyAdapter classe. Merci de me demander quelle partie avez-vous besoin d', je vais l'ajouter à la question.

OriginalL'auteur SavasCinar | 2012-12-21