图标未显示在图像视图中

Icons not showing in Image View

我正在尝试将项目显示到网格布局管理器中的 Recycler 视图中。 我的列表项 xml 文件是

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto">

<android.support.v7.widget.CardView

    app:cardElevation="3dp"
    app:cardUseCompatPadding="true"
    app:cardCornerRadius="10dp"
    android:layout_margin="10dp"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:id="@+id/cardView">

    <LinearLayout
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        android:id="@+id/itemLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/iv_icon"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_marginBottom="3dp"
            android:layout_marginLeft="1dp"
            android:layout_marginRight="1dp"
            android:layout_marginTop="10dp"
            android:adjustViewBounds="true"
            android:paddingBottom="5dp"
            android:paddingLeft="5dp"
            android:paddingRight="5dp"
            android:scaleType="fitCenter"
            android:src="@mipmap/health_2" />

        <TextView
            android:id="@+id/tv_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:ellipsize="end"
            android:ems="5"
            android:gravity="center"
            android:lines="2"
            android:maxEms="5"
            android:maxLines="2"
            android:text="Health" />

    </LinearLayout>

</android.support.v7.widget.CardView>

</RelativeLayout>

我的代码片段是:

主要活动:

    mLayoutManager = new GridLayoutManager(MainActivity.this, 3);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(mLayoutManager);
    adapter = new MyAdapter (MainActivity.this, 
    arrayList);
    recyclerView.setAdapter(adapter);

我的适配器:

@Override
public void onBindViewHolder(ViewHolder holder, final int position) {

    model = arraylist.get(position);
    holder.itemIcon.setImageResource(model.getIconName());

}

我将图标名称设置为以这种方式为列表建模:

  model.setIconName(R.mipmap.health_2);

型号Class:

public class DashBoardModel {

String itemName;
int iconName;

public String getItemName() {
    return itemName;
}

public void setItemName(String itemName) {
    this.itemName = itemName;
}

public int getIconName() {
    return iconName;
}

public void setIconName(int iconName) {
    this.iconName = iconName;
}
}

我的问题是在完成这些操作后,我得到如下图所示的输出列表,这不是预期的图标,如何解决这个问题?

您可以使用 glide 库 com.github.bumptech.glide:glide:+ 将图标动态加载到图像视图中,如下所示:

//assuming the getIconName method return an int, i.e R.mipmap.whatever
Glide.with(mContext).load(model.getIconName()).into(holder.itemIcon);

我也有同样的问题。虽然我不知道为什么从适配器设置图像不起作用,但我通过在 ImageViewHandler.

上发布回调解决了这个问题
@Override
fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
    holder.itemIcon.post {
        holder.itemIcon.setImageResource(...)
    }
}