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