Bonjour,

J'ai un problème avec une de mes ListView (une liste de demande de contact), à laquelle j'associe un adapter qui contient une liste de demandes de contacts. Chaque ligne a deux boutons, un pour accepter la demande et un pour refuser la demande.

voici les onClick de mes deux boutons :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
 
bAcceptContact.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>(){
                            @Override
                            protected Void doInBackground(Void... params) {
 
                                FcWebServicesInterface fcService = FcServiceProvider.getInstance().getFcService();
                                try {
                                    RestCallback<ContactBasicResponse> callbackAcceptContact = new RestCallback<ContactBasicResponse>() {
                                        @Override
                                        public void failure(RestError restError) {
                                            Toast.makeText(context, "An error occured, please try again.", Toast.LENGTH_LONG).show();
                                        }
 
                                        @Override
                                        public void success(ContactBasicResponse contactBasicResponse, Response response) {
                                            Toast.makeText(context, context.getString(R.string.contact_accepted), Toast.LENGTH_LONG).show();
 
                                            //on change l'interface
                                            layoutButtonsResponse.setVisibility(View.GONE);
                                            layoutButtonExpandResponse.setVisibility(View.GONE);
                                            tvLastActTitle.setText(R.string.new_person_in_network);
 
                                            //et on réaffiche le contenu
                                            layoutNameJob.setVisibility(View.VISIBLE);
                                        }
                                    };
 
                                    fcService.postAcceptContact(FcServiceProvider.accessTokenUser, act.getUserId(), callbackAcceptContact);
 
                                    return null;
 
                                }
                                catch(RetrofitError re){
                                    Log.e("App", "retrofit exception");
                                    return null;
                                }
 
                            }
                        }.execute();
                    }
                });
 
                bRejectContact.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>(){
                            @Override
                            protected Void doInBackground(Void... params) {
 
                                FcWebServicesInterface fcService = FcServiceProvider.getInstance().getFcService();
                                try {
                                    RestCallback<ContactBasicResponse> callbackRejectContact = new RestCallback<ContactBasicResponse>() {
                                        @Override
                                        public void failure(RestError restError) {
                                            Toast.makeText(context, "An error occured, please try again.", Toast.LENGTH_LONG).show();
                                        }
 
                                        @Override
                                        public void success(ContactBasicResponse contactBasicResponse, Response response) {
                                            Toast.makeText(context, context.getString(R.string.contact_rejected), Toast.LENGTH_LONG).show();
 
                                            //on supprime la ligne
                                            activities.remove(position);
                                            notifyDataSetChanged();
 
                                        }
                                    };
 
                                    fcService.postRejectContact(FcServiceProvider.accessTokenUser, act.getUserId(), callbackRejectContact);
 
                                    return null;
 
                                }
                                catch(RetrofitError re){
                                    Log.e("App", "retrofit exception");
                                    return null;
                                }
 
                            }
                        }.execute();
                    }
                });

Lorsque je refuse une demande, ma bdd se met bien à jour, la ligne disparait bien, sauf que quand j'essaye de refuser/accepter une deuxième demande, ça ne fonctionne pas, je pense que la position à l'intérieur du onClick n'est plus bonne (exemple : la position 2 a été supprimée, et j'essaye de supprimer le 3, il n'y arrive pas parce que le 3 est devenu 2, mais probablement que dans la fonction onClick il y a toujours 3)

J'ai un peu de mal à m'expliquer désolé, je bloque sur ce problème depuis plusieurs heures , quelqu'un pourrait m'aider ? ^^ Si y'a besoin d'infos supplémentaires ou de bouts de code n'hésitez pas à demander.

Merci d'avance