Trying to build an Image Editing app.I'm Using RecyclerView in horizontal fashion for showing thumbnail of images.On startup all thumbnails are shown properly but when scrolled some of the thumbnails are not visible.The thumbnails shows color effects which is implemented using Picasso Transformations library.
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 class
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);
}
}
}
使用if else条件在imageView中设置图片并添加默认值
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.