如何使用单个 Imageview 显示多个不同图标中的一个

How can I use a single Imageview to display 1 of several different icons

我是新手,如有任何帮助或指导,我们将不胜感激!

如何使用单个 Imageview 在我的可绘制对象中显示多个不同图标中的一个。

举个具体的例子——添加新条目时,用户可以select 15 个不同的预定响应之一。每个都有自己的图标。然后稍后在查看条目时,我需要一个 ImageView 显示与响应相关的图标 selected.

我可以通过在 xml 中设置 15 个图像视图并更改可见性来做到这一点,但这似乎是一种非常混乱且效率低下的方法。

你可以有一个ImageView,使用setImageDrawable方法将图片切换到设备状态。 例如

yourImageView.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.your_image_resource))

贴出你的代码有助于回答。

When adding a new entry a user can select one of 15 different predetermined responses.

希望您得到的响应是整数(索引)

private static final List<Integer> icon_list = Arrays.asList(R.drawable.option_1,R.drawable.option_2,...R.drawable.option_15);
view.findViewById(R.id.myIcon).setImageDrawable(ContextCompat.getDrawable(activity, ICON_LIST.get(index)));

万一您收到字符串形式的响应,您可以使用散列图存储键值或使用 switch case。

您可以创建一个 bindingAdapter 并对图像视图使用数据绑定,让适配器为您完成工作。有一个使用图像视图的好例子 in the docs here

像这样(我使用枚举作为您的响应类型)

@BindingAdapter("imageCustomDrawable")
fun setCustomDrawable(view: ImageView, responseType: EnumValue) {
  val drawableResId = when(responseType) {
    EnumValue.OK -> R.drawable.ok_drawable
    ...
  }

  view.setImageDrawable(ContextCompat.getDrawable(drawableResId))
}

您的图像视图 xml 将是

<ImageView
  android:id="@+id/your_imageview"
  app:imageCustomDrawable="@{YOUR_RESPONSE_HERE}"/>