Ich versuche, eine Bildbearbeitungs-App zu erstellen. Ich benutze RecyclerView in horizontaler Form, um Miniaturbilder anzuzeigen. Beim Start werden alle Miniaturansichten korrekt angezeigt, aber beim Scrollen sind einige der Miniaturansichten nicht sichtbar Die Miniaturbilder zeigen Farbeffekte, die mit der Picasso Transformations-Bibliothek implementiert wurden.beim Scrollen einige Elemente der Recycleransicht verschwinden
xml
<android.support.v7.widget.RecyclerView
android:id="@+id/horizontal_recycler_view"
android:layout_width="match_parent"
android:layout_height="90dp"
android:layout_above="@+id/rlBottom"
android:layout_below="@+id/flPhoto"
android:background="@color/grey"/>
Adapter Klasse
public class FiltersAdapter extends RecyclerView.Adapter<FiltersAdapter.ViewHolder> {
private Context mContext;
private List<Type> mDataSet;
private Uri selectedPhoto;
public enum Type {
Grayscale,
Sepia,
Contrast,
Invert,
Pixel,
Sketch,
Swirl,
Brightness,
Kuawahara,
Vignette
}
public FiltersAdapter(Context context, List<Type> dataSet, Uri selectedPhoto) {
mContext = context;
mDataSet = dataSet;
this.selectedPhoto = selectedPhoto;
}
@Override
public FiltersAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(mContext).inflate(R.layout.list_item_layout, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(FiltersAdapter.ViewHolder holder, int position) {
switch (mDataSet.get(position)) {
case Grayscale:
Picasso.with(mContext)
.load(selectedPhoto)
.transform(new GrayscaleTransformation())
.into(holder.image);
break;
case Sepia:
Picasso.with(mContext)
.load(selectedPhoto)
.transform(new SepiaFilterTransformation(mContext))
.into(holder.image);
break;
case Contrast:
Picasso.with(mContext)
.load(selectedPhoto)
.transform(new ContrastFilterTransformation(mContext, 2.0f))
.into(holder.image);
break;
case Invert:
Picasso.with(mContext)
.load(selectedPhoto)
.transform(new InvertFilterTransformation(mContext))
.into(holder.image);
break;
case Pixel:
Picasso.with(mContext)
.load(selectedPhoto)
.transform(new PixelationFilterTransformation(mContext, 20))
.into(holder.image);
break;
case Sketch:
Picasso.with(mContext)
.load(selectedPhoto)
.transform(new SketchFilterTransformation(mContext))
.into(holder.image);
break;
case Swirl:
Picasso.with(mContext)
.load(selectedPhoto)
.transform(new SwirlFilterTransformation(mContext, 0.5f, 1.0f, new PointF(0.5f, 0.5f)))
.into(holder.image);
break;
case Brightness:
Picasso.with(mContext)
.load(selectedPhoto)
.transform(new BrightnessFilterTransformation(mContext, 0.5f))
.into(holder.image);
break;
case Kuawahara:
Picasso.with(mContext)
.load(selectedPhoto)
.transform(new KuwaharaFilterTransformation(mContext, 25))
.into(holder.image);
break;
case Vignette:
Picasso.with(mContext)
.load(selectedPhoto)
.transform(new VignetteFilterTransformation(mContext, new PointF(0.5f, 0.5f),
new float[]{0.0f, 0.0f, 0.0f}, 0f, 0.75f))
.into(holder.image);
break;
}
holder.title.setText(mDataSet.get(position).name());
}
@Override
public int getItemCount() {
return mDataSet.size();
}
@Override
public int getItemViewType(int position) {
return position;
}
static class ViewHolder extends RecyclerView.ViewHolder {
public ImageView image;
public TextView title;
ViewHolder(View itemView) {
super(itemView);
image = (ImageView) itemView.findViewById(R.id.thumbnailImage);
title = (TextView) itemView.findViewById(R.id.title);
}
}
}
In Schalter immer halten Standardfall hinzufügen, so dass Wenn nichts übereinstimmt, wird der Standardfall ausgeführt. – Nikhil