我有一个适配器MyAdapter.java,用于recyclerView
我有Model.xml行视图
<android.support.v7.widget.CardView>
<RelativeLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:padding="@dimen/padd_10dp">
<TextView
android:ellipsize="end"
android:id="@+id/subject"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:maxLines="1"
android:paddingLeft="@dimen/padd_10dp"
android:textAppearance="@style/TextAppearance.AppCompat"
android:textStyle="bold" />
<TextView
android:ellipsize="end"
android:id="@+id/message"
android:layout_below="@+id/subject"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:maxLines="2"
android:paddingLeft="@dimen/padd_10dp"
android:textAppearance="@style/TextAppearance.AppCompat" />
<TextView
android:alpha="1.87"
android:id="@+id/uploadedDate"
android:layout_alignParentRight="true"
android:layout_below="@id/message"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:padding="@dimen/padd_4db"
android:text="2018-07-21"
android:textSize="@dimen/text_size_12sp" />
//Display Array of images/media here
</RelativeLayout>
如何在适配器类的onBindViewHolder上显示图像/媒体阵列。
有人可以提出想法吗?
答案 0 :(得分:1)
我在这里分享您可以查看的解决方法。
如何在一行中显示一组图像
连续添加水平滚动视图。
<LinearLayout
android:id="@+id/linearLayout3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="2dp"
android:background="@color/white"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
/* OTHER VIEWS */
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp">
<LinearLayout
android:id="@+id/imgEvents"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" />
</HorizontalScrollView>
</LinearLayout>
请注意,我正在使用滑行库,您可以在这里https://github.com/bumptech/glide
在适配器类中添加此方法以在运行时创建imageview。
private View getImageView(String url) {
ImageView imageView = new ImageView(mContext);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(0, 0, 10, 0);
imageView.setLayoutParams(lp);
Glide.with(mContext).load(url).into(imageView);
return imageView;
}
根据需要调整imageview参数。
public class MyViewHolder extends RecyclerView.ViewHolder {
private LinearLayout imgEvevts;
// Add other views also
public MyViewHolder(View itemView) {
super(itemView);
imgEvevts = itemView.findViewById(R.id.imgEvents);
}
}
@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
String[] event_images = item.getImages(); //get array of strings here & declare string array at top.
for (int i = 0;i < event_images.length;i++)
{
holder.imgEvevts.addView(getImageView(event_images[i]));
}
}