Bonjour,
Je suis en train de finir de développer une application Android mais je me heurte a un problème depuis prés d'un mois et que je n'arrive a résoudre

Explication :
J'ai une corbeille. Dans cette corbeille, il y a la possibilité de sélectionner plusieurs items afin soit de les restaurer ou de les supprimer définitivement
La multiple sélection fonctionne bien mais quand l'utilisateur appuie sur "RESTAURER" ou l'icone de la corbeille, il y a uniquement la première données de la sélection qui est supprimée (l'interface supprime correctement toute les données sélectionnées mais pas dans la base de données mysql)

Voici ma classe MultiSelectRecycleViewAdapter

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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
 
 
public class MultiSelectRecycleViewAdapter extends SelectableAdapter<MultiSelectRecycleViewAdapter.ViewHolder> implements Filterable {
 
    public ArrayList<Book> book, filterList;
    private Context mContext;
    SearchMultiSelect filter;
    private ViewHolder.ClickListener clickListener;
 
 
    public MultiSelectRecycleViewAdapter(Context context, ArrayList<Book> book, ViewHolder.ClickListener clickListener) {
        this.book = book;
        this.mContext = context;
        this.clickListener = clickListener;
        this.filterList = book;
 
    }
 
    // Create new views
    @Override
    public MultiSelectRecycleViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
 
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.content_trash, null);
 
        ViewHolder viewHolder = new ViewHolder(v, clickListener);
 
        return viewHolder;
    }
 
    @Override
    public void onBindViewHolder(ViewHolder viewHolder, int position) {
 
        viewHolder.txtBookId.setText(book.get(position).getId());
        viewHolder.txtTitle.setText(book.get(position).getTitleBook());
        viewHolder.txtInfo.setText(book.get(position).getBookDate());
        Picasso.with(mContext).load(book.get(position).getImage()).resize(225, 307).into(viewHolder.image);
 
        viewHolder.selectedOverlay.setVisibility(isSelected(position) ? View.VISIBLE : View.INVISIBLE);
 
    }
 
    @Override
    public int getItemCount() {
        return book.size();
    }
 
    @Override
    public Filter getFilter() {
 
        if (filter == null) {
            filter = new SearchMultiSelect(filterList, this);
        }
 
        return filter;
    }
 
   public void removeItem(int position) {
        book.remove(position);
        notifyItemRemoved(position);
    }
 
    public void removeItems(List<Integer> positions) {
        // Reverse-sort the list
        Collections.sort(positions, new Comparator<Integer>() {
            @Override
            public int compare(Integer lhs, Integer rhs) {
                return rhs - lhs;
            }
        });
 
        // Split the list in ranges
        while (!positions.isEmpty()) {
            if (positions.size() == 1) {
                removeItem(positions.get(0));
                positions.remove(0);
            } else {
                int count = 1;
                while (positions.size() > count && positions.get(count).equals(positions.get(count - 1) - 1)) {
                    ++count;
                }
 
                if (count == 1) {
                    removeItem(positions.get(0));
                } else {
                    removeRange(positions.get(count - 1), count);
                }
 
                for (int i = 0; i < count; ++i) {
                    positions.remove(0);
                }
            }
        }
    }
 
    private void removeRange(int positionStart, int itemCount) {
        for (int i = 0; i < itemCount; ++i) {
            book.remove(positionStart);
        }
        notifyItemRangeRemoved(positionStart, itemCount);
    }
 
    public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
 
        public TextView txtTitle, txtBookId, txtInfo;
        public ImageView image;
        private ClickListener listener;
        private final CheckBox selectedOverlay;
 
 
        public ViewHolder(View itemLayoutView, ClickListener listener) {
            super(itemLayoutView);
 
            this.listener = listener;
 
            txtBookId = (TextView) itemView.findViewById(R.id.book_id);
            txtTitle = (TextView) itemView.findViewById(R.id.header_title);
            txtInfo = (TextView) itemView.findViewById(R.id.info);
            image = (ImageView) itemView.findViewById(R.id.image);
            selectedOverlay = (CheckBox) itemView.findViewById(R.id.selected_overlay);
 
            itemLayoutView.setOnClickListener(this);
 
            itemLayoutView.setOnLongClickListener(this);
        }
 
        @Override
        public void onClick(View v) {
            if (listener != null) {
                listener.onItemClicked(getAdapterPosition());
            }
        }
 
        @Override
        public boolean onLongClick(View view) {
            if (listener != null) {
                return listener.onItemLongClicked(getAdapterPosition());
            }
            return false;
        }
 
        public interface ClickListener {
            void onItemClicked(int position);
            boolean onItemLongClicked(int position);
        }
    }
}
Et voici le morceau ou je suis bloqué

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
        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            txtBookId = (TextView) findViewById(R.id.book_id);
            HashMap<String, String> user = db.getUserDetails();
            String uid = user.get("uid");
            switch (item.getItemId()) {
                case R.id.action_empty:
                       /* DeleteBook(txtBookId.getText().toString(), uid);*/
                    mAdapter.removeItems(mAdapter.getSelectedItems());
                    mode.finish();
                    return true;
 
                case R.id.action_restaure:
                    for (int i = 0; i < mAdapter.getItemCount() - 1; i--)
                    {
 
                    }
                      /*RestoreBook(txtBookId.getText().toString(), uid);*/
                    mAdapter.removeItems(mAdapter.getSelectedItems());
                    mode.finish();
 
                    return true;
 
                default:
                    return false;
            }
        }
Pour supprimer la données ou la restaurer, il faut que je récupère l'id de celle ci. Seul le premier item de la sélection j'arrive a récupérer l'id mais pas les suivantes

Merci de votre aide