5

Я хочу создать галерею изображений с заголовком TextView и ImageViews в формате HorizontalScrollView, как показано на рисунке figure.Android: Как реализовать галерею изображений с помощью RecyclerView

Я использую RecyclerView уменьшить RESSOURCES для моего приложения и реализовать изображения со многими ArrayList как:

 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, если, например, У меня есть пять ArrayList с 15 записями, а у двух только 14 или 13 записей. Но я хочу, чтобы пустая запись в точной строке, а не в конце. Я попытался реализовать null вместо R.drawable., но это приводит к сбою приложения.

+0

Хотите показать изображение по умолчанию, когда drawable пуст? –

+0

Это была бы возможность. Но нет, я не хочу показывать изображение по умолчанию, потому что HorizontalScrollView должен останавливаться после последнего изображения каждого raw. –

ответ

1

Я хотел бы сослаться свой собственный ответ на подобный вопрос немного: https://stackoverflow.com/a/34462696/1658267 (! NB идти вперед, я бы использовать класс/методы именования оттуда)

Единственное отличие будет заключаться в замене TextViews с ImageView 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> 

Что касается пустых слотов - там уже несколько вариантов:

  • Вы можете передать аннулирует, а затем в чем-то, которое называется ChipView (в вашем случае - вид с изображением), в displayItem() проверке методы, если параметр является нулевым - то просто установить правильную ширину в View
  • Вы можете создать отдельный viewType для горизонтального RecyclerView и создать пустое представление для него (как заполнитель). Тогда вам нужно немного обновить 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]); 
        } 
    } 
    

    И создать EmptyView, с предопределенным не-0 ширину.

Лично я предпочитаю второй вариант (расцепления, легче поддерживать OnClick - без дополнительной логики там, и т.д.)

Я надеюсь, что это помогает.

Смежные вопросы