【问题标题】:How to set ImageView by file name from object data to existing image in Drawable folder? [duplicate]如何通过文件名从对象数据设置 ImageView 到 Drawable 文件夹中的现有图像? [复制]
【发布时间】:2017-12-14 00:25:39
【问题描述】:

我需要调用文件名并设置为 ImageView,但它根本不起作用。我知道下面的代码是完全错误的:

holder.iconFilename.setImageDrawable(subjects.getIconFilename());

如何正确调用?所有需要调用的图片都在 Drawable 文件夹中。


我的完整代码:

@Override
public void onBindViewHolder(SubjectAdapter.MyViewHolder holder, int position) {
    context = holder.itemView.getContext();
    Subjects subjects = subjectsList.get(position);
    holder.iconFilename.setImageDrawable(subjects.getIconFilename()); // Definitely wrong.
    holder.subjectNameStd.setText(subjects.getSubjectNameStd());
    holder.itemView.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View v) {
            Intent gotoChapter = new Intent (context,ChapterActivity.class);
            context.startActivity(gotoChapter);
        }
    });
}

【问题讨论】:

  • subjects.getIconFilename() 究竟返回了什么?
  • 文件名 - 类型:字符串@CommonsWare
  • 谢谢,但该字符串与任何东西有什么关系?我不知道“我放在 Drawable 文件夹中的所有 icon_filename(s)”是什么意思。
  • getPackageName()Context 上的一个方法。你有一个,叫context

标签: android


【解决方案1】:

如果你的意思是你有像这样的资源图像:res/drawable/whatever,那么你像这样将它加载到 ImageView 中:

imageView.setImageResource(R.drawable.whatever);

这是相当标准的教科书内容。您可能还缺少其他东西。

例如,您的 holder.iconFilename 看起来很可疑。您的持有人应该有一个 ImageView 的属性,而不是文件名,例如holder.fooImageView.

您没有解释的另一个潜在问题是主题是什么。它应该返回资源 id,例如科目.getPhotoResourceId()。如果您尝试从数据库或其他外部源加载对可绘制资源的引用,则需要创建从外部常量到 R.drawable.whatever 常量的映射。

For example:
if (subjects.getStatusId() == OK_STATUS) {
  holder.statusImageView.setImageResource(R.drawable.ok_icon);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多