Lar*_* H. 5 null android arraylist horizontalscrollview android-recyclerview
我想创建一个一个图片库TextView的头和ImageViews一个HorizontalScrollView像它显示在此图.
我使用a 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
));Run Code Online (Sandbox Code Playgroud)
现在我的问题是:在一行中创建一个空条目的最佳解决方案是什么ArrayList,例如,我有五个ArrayList有15个条目,两个只有14或13个条目.但我希望在确切的行而不是在结尾处的空条目.我试图实现一个null而不是R.drawable.但这会导致应用程序崩溃.
我想在一个稍微类似的问题中参考我自己的答案:/sf/answers/2412388751/ (注意!今后,我将使用那里的类/方法命名)
唯一的区别是替换TextViews为ImageViews。像这样:
<?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>
Run Code Online (Sandbox Code Playgroud)
关于空槽 - 有多种选择:
ChipView(在您的情况下 - 带图像的视图),在displayItem()方法中检查参数是否为空 - 然后只需为ViewviewType您可以为水平创建单独的视图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]);
}
}
Run Code Online (Sandbox Code Playgroud)
并创建一个EmptyView具有预定义非 0 宽度的 , 。
就我个人而言,我更喜欢第二个选项(解耦,更容易维护 onClick - 没有额外的逻辑,等等)
我希望,它有帮助。
| 归档时间: |
|
| 查看次数: |
2737 次 |
| 最近记录: |