我想在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
的一行中创建空条目的最佳解决方案是什么?我有五个ArrayList
有15个条目,两个只有14或13个条目。但我希望在确切的行而不是在结尾处的空条目。
我尝试实施null
而不是R.drawable.
,但这会导致应用崩溃。
答案 0 :(得分:1)
我想在一个稍微类似的问题中引用我自己的答案: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
您可以为水平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 - 没有额外的逻辑等)。
我希望,这有帮助。