Ich habe ein Problem, das nur auf Android 5.1.1 und wenigen Geräten auf 5.1 Reprodieren. Auf den Rest der Versionen funktioniert gut.RecyclerView nicht Benutzeroberfläche auf Android 5.1.1 aktualisieren
Recycler-Ansicht onClick-Listener haben, wo ich versuche, die Sichtweite von GONE zu VISIBLE oder umgekehrt zu aktualisieren. Nach dem Klicken auf den Eintrag ändert sich nichts auf der Benutzeroberfläche. Hinweis: Wenn ich das Fragment (BackButton) schließe und erneut öffne, wird die Benutzeroberfläche aktualisiert. Auch nach dem Drücken der Zurück-Taste sehe ich, dass die Benutzeroberfläche für einige Millisekunden aktualisiert wird, bevor sie gelöscht wird.
Ich habe versucht, alle Adapter, aktuellen Artikel zu benachrichtigen, itemView, swap() ungültig und Adapter ohne Erfolg erneut zu setzen. Alle Methoden setVisibility(), onClick, Callbacks, BindView werden erfolgreich aufgerufen (Debugger).
public class PhotoGalleryAdapter extends RecyclerView.Adapter<PhotoGalleryAdapter.PhotoHolder> {
private Context context;
private List<String> photos;
private View.OnClickListener listener;
public PhotoGalleryAdapter(Context context, List<String> photos, View.OnClickListener listener) {
this.context = context;
this.photos = photos;
this.listener = listener;
}
@Override
public PhotoGalleryAdapter.PhotoHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_photo, parent, false);
return new PhotoHolder(v, listener);
}
@Override
public void onBindViewHolder(final PhotoGalleryAdapter.PhotoHolder holder, int position) {
String photoPath = photos.get(position);
Glide.with(context)
.load(photoPath)
.thumbnail(0.1f)
.into(holder.image);
if (Utils.getSelectedPhotos().contains(photoPath)) {
DrawableCompat.setTint(holder.selection.getDrawable(), ContextCompat.getColor(context, R.color.white));
holder.selection.setVisibility(View.VISIBLE);
} else {
holder.selection.setVisibility(View.GONE);
}
}
@Override
public int getItemCount() {
return photos.size();
}
public void updateDataSet(List<String> photos) {
if (!photos.equals(this.photos)) {
this.photos.clear();
this.photos.addAll(photos);
notifyDataSetChanged();
}
}
class PhotoHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
@BindView(R.id.imageView) AppCompatImageView image;
@BindView(R.id.selectionState) AppCompatImageView selection;
private View.OnClickListener listener;
PhotoHolder(View view, View.OnClickListener listener) {
super(view);
ButterKnife.bind(this, view);
view.setOnClickListener(this);
this.listener = listener;
}
@Override
public void onClick(View view) {
if (Utils.getSelectedPhotos().contains(photos.get(getAdapterPosition()))) {
selection.setVisibility(View.GONE);
Utils.getSelectedPhotos().remove(photos.get(getAdapterPosition()));
} else {
Utils.getSelectedPhotos().add(photos.get(getAdapterPosition()));
DrawableCompat.setTint(selection.getDrawable(), ContextCompat.getColor(context, R.color.white));
selection.setVisibility(View.VISIBLE);
}
listener.onClick(view);
}
}
}
Und auf Rückruf:
@Override public void onClick(View view) {
callbacks.onPhotoSelected(Utils.getSelectedPhotos().size());
adapter.notifyDataSetChanged(); }
Sind Ihre Support-Bibliotheken auf dem neuesten Stand? –
@TylerPfaff ja, supportVersion = '27 .0.0 ' –