5

TextView başlığına sahip bir resim galerisi ve HorizontalScrollView numaralı telefona bu figure'da gösterildiği gibi ImageViews oluşturmak istiyorum.Android: Bir görüntü galerisini RecyclerView ile uygulama

 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 
 
     ));
Şimdi

benim sorum: nedir iyi çözüm yaratmak için

ben uygulamam için kaynakların bulunduğu azaltmak ve benzeri birçok ArrayList ile görüntüleri uygulamak için bir RecyclerView kullanmak Örneğin, ArrayList numaralı bir satırdaki boş bir giriş 15 girişli beş ArrayList var ve ikisi sadece 14 veya 13 girdiye sahip. Ama boş girdiyi tam satırda istiyorum ve sonunda değil. R.drawable. yerine null kullanmayı denedim, ancak bu uygulamanın çökmesine yol açıyor.

+0

Çizim yapılabilir boş olduğunda varsayılan bir görüntü göstermek mi istiyorsunuz? –

+0

Bu bir ihtimal olurdu. Ama hayır, varsayılan bir görüntü göstermek istemiyorum çünkü HorizontalScrollView, her işlenenin son görüntüsünden sonra durmalıdır. –

cevap

1

ben biraz benzer söz konusu kendi cevap bakınız istiyorum: https://stackoverflow.com/a/34462696/1658267 tek fark ImageView ile TextViews değiştirmek şeklinde olur

(! NB ileriye, ben sınıf/yöntem oradan adlandırma kullanmayı tercih ediyorum) s. Şunun gibi: - Boş yuvaları İlişkin

<?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> 

birden çok seçenek ordasın:

  • Ardından ChipView denirdi şey boş değerlere geçebilir ve (sizin durumunuzda - görüntüyle görünüm), displayItem() yöntem kontrol parametresi null ise - o zaman sadece yatay RecyclerView için ayrı viewType oluşturmak ve (bir tutucu olarak) bunun için boş bir görünüm oluşturmak View
  • uygun genişliğini ayarlamak.

    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]); 
        } 
    } 
    

    Ve-0 genişliği önceden tanımlanmış olan bir EmptyView oluşturun: Sonra ChipsAdapter güncellemek için hafifçe gerekir.

Şahsen ben ikinci seçeneği tercih (ayırma, daha kolay onClick korumak için - orada ekstra mantık vs. olmadan) umarım

, yardımı olur.