我想创建一个图片库,其中包含 TextView
作为标题,ImageViews
在 HorizontalScrollView
中,就像在 figure 中显示的那样.
我使用 RecyclerView
来减少我的应用程序的资源,并使用许多 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
的一行中创建一个空条目的最佳解决方案是什么?我有五个包含 15 个条目的 ArrayList
,两个只有 14 或 13 个条目。但我希望空条目位于确切的行而不是末尾。
我试图实现一个 null
而不是 R.drawable.
但这会导致应用程序崩溃。
最佳答案
我想在一个稍微类似的问题中引用我自己的答案:https://stackoverflow.com/a/34462696/1658267 (注意!今后,我会使用类/方法命名)
唯一的区别是将 TextViews
替换为 ImageView
。像这样:
<?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
设置适当的宽度
您可以为水平
RecyclerView
创建单独的viewType
并为其创建一个空 View (作为占位符)。然后你需要稍微更新一下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]); } }
并创建一个具有预定义非 0 宽度的
EmptyView
。
我个人更喜欢第二种选择(解耦,更容易维护 onClick - 没有额外的逻辑等)
希望对您有所帮助。
关于Android:如何使用 RecyclerView 实现图片库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34475019/