图标未在图像视图中显示

时间:2018-07-15 21:51:02

标签: android listview gridview android-recyclerview imageview

我正在尝试将这些项目显示到Grid Layout Manager中的Recycler View中。 我的列表项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>

我的代码段是:

MainActivity:

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

MyAdapter:

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

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

}

我通过这种方式将图标名称设置为列表的模型:

  model.setIconName(R.mipmap.health_2);

模型类:

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

我的问题是做完这些事情后,我得到如下图所示的输出列表,该列表不是预期的图标,如何解决此问题?

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以使用滑动库 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);