2016-08-22 8 views
1

イメージ編集アプリケーションを構築しようとしています。イメージのサムネイルを表示するために水平にRecyclerViewを使用しています。起動時にすべてのサムネイルは正しく表示されますが、サムネイルは、Picasso Transformationsライブラリを使用して実装された色効果を示します。は、recyclerviewのアイテムのいくつかが消えて表示されます

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"/> 

アダプタクラス

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); 
     } 
    } 
} 
+0

は常にそのように、デフォルトのケースを保ちます何も一致しない場合、デフォルトの場合が実行されます。 – Nikhil

答えて

0

使用else条件がImageViewの中に画像を設定しても、デフォルト値を追加する場合は、スイッチで

+0

スイッチケースに何が問題なのですか?また、他の場合を使用して画像を設定するコードを教えてください – musica

+0

スイッチケースも使用できますが、スイッチケースがholder.imageにデフォルト画像を追加する前に –

+0

サムネイルにあらかじめ定義された画像を使用しました。私はギャラリーから選択した同じイメージを使用していましたが、問題は選択したイメージのサイズであったと思います。 – musica

関連する問題