Android:如何使用RecyclerView实现图像库

Android:如何使用RecyclerView实现图像库,android,arraylist,null,android-recyclerview,horizontalscrollview,Android,Arraylist,Null,Android Recyclerview,Horizontalscrollview,我想创建一个图像库,以TextView作为标题,以HorizontalScrollView作为ImageViews的形式显示,如图所示 我使用RecyclerView来减少我的应用程序的资源,并使用许多ArrayList实现图像,如: itemFotoIDs.addAll(Arrays.asList( R.可拉拔电缆\u嘎吱嘎吱\u 1 ,R.drawable.dips_1 ,R.drawable.Kabelruderen_breit_1 ,R.drawable.kabelrudern_工程1

我想创建一个图像库,以
TextView
作为标题,以
HorizontalScrollView
作为
ImageViews
的形式显示,如图所示

我使用
RecyclerView
来减少我的应用程序的资源,并使用许多
ArrayList
实现图像,如:

itemFotoIDs.addAll(Arrays.asList(
R.可拉拔电缆\u嘎吱嘎吱\u 1
,R.drawable.dips_1
,R.drawable.Kabelruderen_breit_1
,R.drawable.kabelrudern_工程1
,R.drawable.klimmzug_1
,R.drawable.kh_schulterdruecken_1
,R.drawable.kh_卷发
,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_卷发1

));我想在一个稍微相似的问题中引用我自己的答案:(注意!接下来,我将使用类/方法命名)

唯一的区别是将
textview
替换为
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>
并创建一个
空视图
,具有预定义的not-0宽度

就我个人而言,我更喜欢第二种选择(解耦,更容易维护onClick,无需额外的逻辑,等等)


我希望,这会有所帮助。

当可绘制文件为空时,是否要显示默认图像?这是可能的。但是不,我不想显示默认图像,因为HorizontalScrollView应该在每个raw的最后一个图像之后停止。
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]);
    }
}