在RecylerView中显示内容及其相应的图像

时间:2018-09-05 14:51:58

标签: android android-recyclerview recycler-adapter

我有一个适配器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上显示图像/媒体阵列。

有人可以提出想法吗?

1 个答案:

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


}