5

Chcę utworzyć galerię obrazów z TextView jako nagłówkiem i ImageViews w HorizontalScrollView, jak to jest wyświetlane w tym figure.Android: Jak zaimplementować galerię obrazów z RecyclerView

używam RecyclerView do zmniejszenia zasobów dla mojej aplikacji i wdrażania obrazów z wieloma ArrayList jak:

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

Teraz moje pytanie: Co jest najlepszym rozwiązaniem do tworzenia pusty wpis w wierszu tego ArrayList, jeśli np Mam pięć ArrayList z 15 wpisami i dwa mają tylko 14 lub 13 wpisów. Ale chcę puste wejście dokładnie w rzędzie, a nie na końcu. Próbowałem zaimplementować null zamiast R.drawable., ale to prowadzi do awarii aplikacji.

+0

Czy chcesz wyświetlić obraz domyślny, gdy losowanie jest puste? –

+0

To byłaby możliwość. Ale nie, nie chcę wyświetlać obrazu domyślnego, ponieważ HorizontalScrollView powinien zatrzymać się po ostatnim obrazie każdego surowca. –

Odpowiedz

1

Chciałbym odnieść własną odpowiedź w nieco podobnym pytaniem: https://stackoverflow.com/a/34462696/1658267 (! NB przyszłości, chciałbym użyć klasy/metody nazywania stamtąd)

Jedyną różnicą byłoby zastąpienie TextViews z ImageView s. Tak:

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

chodzi pustych szczelin - tam są różne opcje:

  • można przekazać wartości null, a następnie w czymś, co nazwano ChipView (w przypadku - widok z obrazem) w displayItem() metody sprawdzania, czy parametr ma wartość null - wtedy wystarczy ustawić właściwą szerokość do View
  • można utworzyć oddzielny viewTypeRecyclerView dla poziomego i utworzyć pusty widok dla niego (jako zastępczy). Następnie trzeba lekko zaktualizować ChipsAdapter:

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

    i utworzyć EmptyView z predefiniowanych nie-0 szerokość.

Osobiście preferuję drugą opcję (oddzielenie, łatwiejsze do utrzymania onClick - bez dodatkowej logiki tam, itd.)

mam nadzieję, że to pomaga.

Powiązane problemy