Skip to content

Commit ffbfdab

Browse files
1 parent be5827c commit ffbfdab

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed

app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetailAdapter.java

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,16 @@ public void addDescription(UploadMediaDetail uploadMediaDetail) {
115115
*/
116116
public void removeDescription(final UploadMediaDetail uploadMediaDetail, final int position) {
117117
selectedLanguages.remove(position);
118-
this.uploadMediaDetails.remove(uploadMediaDetail);
118+
final int ListPosition =
119+
(int) selectedLanguages.keySet().stream().filter(e -> e < position).count();
120+
this.uploadMediaDetails.remove(uploadMediaDetails.get(ListPosition));
121+
int i = position + 1;
122+
while (selectedLanguages.containsKey(i)) {
123+
selectedLanguages.remove(i);
124+
i++;
125+
}
119126
notifyItemRemoved(position);
127+
notifyItemRangeChanged(position, uploadMediaDetails.size() - position);
120128
}
121129

122130
public class ViewHolder extends RecyclerView.ViewHolder {
@@ -140,6 +148,10 @@ public class ViewHolder extends RecyclerView.ViewHolder {
140148
@BindView(R.id.btn_remove)
141149
ImageView removeButton;
142150

151+
AbstractTextWatcher captionListener;
152+
153+
AbstractTextWatcher descriptionListener;
154+
143155
public ViewHolder(View itemView) {
144156
super(itemView);
145157
ButterKnife.bind(this, itemView);
@@ -157,6 +169,8 @@ public void bind(int position) {
157169
eventListener.onPrimaryCaptionTextChange(value.length() != 0);
158170
}
159171
}));
172+
captionItemEditText.removeTextChangedListener(captionListener);
173+
descItemEditText.removeTextChangedListener(descriptionListener);
160174
captionItemEditText.setText(uploadMediaDetail.getCaptionText());
161175
descItemEditText.setText(uploadMediaDetail.getDescriptionText());
162176

@@ -182,13 +196,14 @@ public void bind(int position) {
182196
}
183197

184198
removeButton.setOnClickListener(v -> removeDescription(uploadMediaDetail, position));
185-
186-
captionItemEditText.addTextChangedListener(new AbstractTextWatcher(
187-
captionText -> uploadMediaDetails.get(position).setCaptionText(captionText)));
199+
captionListener = new AbstractTextWatcher(
200+
captionText -> uploadMediaDetails.get(position).setCaptionText(captionText));
201+
descriptionListener = new AbstractTextWatcher(
202+
descriptionText -> uploadMediaDetails.get(position).setDescriptionText(descriptionText));
203+
captionItemEditText.addTextChangedListener(captionListener);
188204
initLanguage(position, uploadMediaDetail);
189205

190-
descItemEditText.addTextChangedListener(new AbstractTextWatcher(
191-
descriptionText -> uploadMediaDetails.get(position).setDescriptionText(descriptionText)));
206+
descItemEditText.addTextChangedListener(descriptionListener);
192207
initLanguage(position, uploadMediaDetail);
193208

194209
//If the description was manually added by the user, it deserves focus, if not, let the user decide

0 commit comments

Comments
 (0)