5

figureに表示されているように、TextViewHorizontalScrollViewに、ImageViewsを画像ギャラリーとして作成します。Android:RecyclerViewで画像ギャラリーを実装する方法

私は私のアプリのためにressourcesを減らすなど、多くの ArrayListで画像を実装するために RecyclerViewを使用

 itemFotoIDs.addAll(Arrays.asList(
 
       R.drawable.cable_crunches_1 
 
       ,R.drawable.dips_1 
 
       ,R.drawable.kabelrudern_breit_1 
 
       ,R.drawable.kabelrudern_eng_1 
 
       ,R.drawable.klimmzug_1 
 
       ,R.drawable.kh_schulterdruecken_1 
 
       ,R.drawable.kh_curls_1 
 
       ,R.drawable.lh_bankdruecken_1 
 
       ,R.drawable.lh_bankdruecken_eng_1 
 
       ,R.drawable.lh_kniebeuge_1 
 
       ,R.drawable.lh_kreuzheben_1 
 
       ,R.drawable.lh_schraegbankdruecken_1 
 
       ,R.drawable.latzug_obergriff_1 
 
       ,R.drawable.seitheben_1 
 
       ,R.drawable.szhantel_curls_1 
 
     ));

は今、私の質問:作成するための最善の解決策は何ですかこの行の空のエントリArrayList、たとえば私は5つのエントリがあるArrayListを持っていて、2つは14または13のエントリしか持っていません。しかし、私は空のエントリを正確な行にしたいが、最後には欲しくない。 R.drawable.の代わりにnullを実装しようとしましたが、これによりアプリがクラッシュします。私は少し似た質問に私自身の答えを参照したいと思います

+0

ドロアブルが空のときにデフォルト画像を表示しますか? –

+0

それは可能性があります。ただし、Horizo​​ntalScrollViewは各ローの最後のイメージの後に停止する必要があるため、デフォルトイメージを表示したくありません。 –

答えて

1

https://stackoverflow.com/a/34462696/1658267(!NBは今後、私はそこから命名クラス/メソッドを使用すると思います)

唯一の違いは、ImageViewTextViewsを置き換えることであろうs。このように:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:background="@drawable/rounded_background" 
    android:layout_margin="4dp" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
    <ImageView 
     android:id="@+id/chipImageView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
</FrameLayout> 

空のスロットについて - 複数のオプションがあります:

  • は、あなたはNULLを渡すことができ、その後、ChipView呼ばれていた何かに(あなたのケースで - 画像で表示します)、 displayItem()方法のチェックにパラメータがnullの場合 - その後、ちょうどあなたが水平RecyclerView用に別のviewTypeを作成し、(プレースホルダなど)それのための空のビューを作成することができますView
  • に適切な幅を設定します。

    static int IMAGE_VIEW_TYPE = 1; 
    static int EMPTY_SLOP_TYPE = 2; 
    
    @Override 
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
        if (viewType = IMAGE_VIEW_TYPE) { 
         return new ChipViewHolder(new ChipView(parent.getContext())); 
        } else { 
         return new ChipViewHolder(new EmptyView(parent.getContext())); 
        } 
    } 
    
    @Override 
    public int getItemViewType(int position) { 
        return chipsArray[position] == null? EMPTY_SLOP_TYPE : IMAGE_VIEW_TYPE; 
    } 
    
    @Override 
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 
        if (holder.itemView instanceof ChipView) { 
         ((ChipView) holder.itemView).displayItem(chipsArray[position]); 
        } 
    } 
    

    および事前定義されていない-0幅で、EmptyViewを作成します。そして、あなたはChipsAdapterを更新するために少し必要があります。

は個人的に私は2番目のオプションを好む(デカップリングを、より容易なのonClickを維持するために - そこに余分なロジック等なし)私は願っています

、それが役立ちます。

関連する問題