fix commons-app#4978 (#4979)

This commit is contained in:
HCH 2022-05-29 10:51:13 +08:00 committed by GitHub
parent be5827c2c7
commit ffbfdabb3a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -115,8 +115,16 @@ public class UploadMediaDetailAdapter extends RecyclerView.Adapter<UploadMediaDe
*/
public void removeDescription(final UploadMediaDetail uploadMediaDetail, final int position) {
selectedLanguages.remove(position);
this.uploadMediaDetails.remove(uploadMediaDetail);
final int ListPosition =
(int) selectedLanguages.keySet().stream().filter(e -> e < position).count();
this.uploadMediaDetails.remove(uploadMediaDetails.get(ListPosition));
int i = position + 1;
while (selectedLanguages.containsKey(i)) {
selectedLanguages.remove(i);
i++;
}
notifyItemRemoved(position);
notifyItemRangeChanged(position, uploadMediaDetails.size() - position);
}
public class ViewHolder extends RecyclerView.ViewHolder {
@ -140,6 +148,10 @@ public class UploadMediaDetailAdapter extends RecyclerView.Adapter<UploadMediaDe
@BindView(R.id.btn_remove)
ImageView removeButton;
AbstractTextWatcher captionListener;
AbstractTextWatcher descriptionListener;
public ViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
@ -157,6 +169,8 @@ public class UploadMediaDetailAdapter extends RecyclerView.Adapter<UploadMediaDe
eventListener.onPrimaryCaptionTextChange(value.length() != 0);
}
}));
captionItemEditText.removeTextChangedListener(captionListener);
descItemEditText.removeTextChangedListener(descriptionListener);
captionItemEditText.setText(uploadMediaDetail.getCaptionText());
descItemEditText.setText(uploadMediaDetail.getDescriptionText());
@ -182,13 +196,14 @@ public class UploadMediaDetailAdapter extends RecyclerView.Adapter<UploadMediaDe
}
removeButton.setOnClickListener(v -> removeDescription(uploadMediaDetail, position));
captionItemEditText.addTextChangedListener(new AbstractTextWatcher(
captionText -> uploadMediaDetails.get(position).setCaptionText(captionText)));
captionListener = new AbstractTextWatcher(
captionText -> uploadMediaDetails.get(position).setCaptionText(captionText));
descriptionListener = new AbstractTextWatcher(
descriptionText -> uploadMediaDetails.get(position).setDescriptionText(descriptionText));
captionItemEditText.addTextChangedListener(captionListener);
initLanguage(position, uploadMediaDetail);
descItemEditText.addTextChangedListener(new AbstractTextWatcher(
descriptionText -> uploadMediaDetails.get(position).setDescriptionText(descriptionText)));
descItemEditText.addTextChangedListener(descriptionListener);
initLanguage(position, uploadMediaDetail);
//If the description was manually added by the user, it deserves focus, if not, let the user decide