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]);
}
}