首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android:获取TextView上展示的ImageView图片来源名称

Android:获取TextView上展示的ImageView图片来源名称
EN

Stack Overflow用户
提问于 2011-06-24 12:11:38
回答 3查看 27.1K关注 0票数 2

嗨,我是android开发的新手,我在这方面遇到了麻烦。当我单击某个图像时,我想在textView上显示我的imageView的源名称。为了更深入地理解,这里是我的image clickListener的硬编码(希望有人也能帮助我改进我的编码)。

代码语言:javascript
运行
复制
    int ctr = 0;
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.play);

        //DECLARE CLICK LISTENERS ON OBJECTS
        ImageView ImageView1 = (ImageView)findViewById(R.id.imageView1);
        ImageView1.setOnClickListener(this);
        ImageView ImageView2 = (ImageView)findViewById(R.id.imageView2);
        ImageView2.setOnClickListener(this);
        ...

public void onClick(View v) {
        //CHANGE TEXT VIEW TEXT BASED ON THE CTR VALUE
        TextView TextView1 =(TextView)findViewById(R.id.textView1); 

        //I WANT TO CHANGE THIS ONE TO DISPLAY SRC INSTEAD OF THE CTR VALUE
        TextView1.setText(Integer.toString(ctr)); 
}

在这里,我不想显示CTR值,而是想要显示我在设置的两个图像之间单击的任何图像的src名称。我相信这是可能的。谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-24 13:03:43

您可以使用下面的方法从id中获取资源的名称:

代码语言:javascript
运行
复制
/**
         * Determines the Name of a Resource,
         * by passing the <code>R.xyz.class</code> and
         * the <code>resourceID</code> of the class to it.
         * @param aClass : like <code>R.drawable.class</code>
         * @param resourceID : like <code>R.drawable.icon</code>
         * @throws IllegalArgumentException if field is not found.
         * @throws NullPointerException if <code>aClass</code>-Parameter is null.                  
         * <code>String resName = getResourceNameFromClassByID(R.drawable.class, R.drawable.icon);</code><br>
         * Then <code>resName</code> would be '<b>icon</b>'.*/
        public String getResourceNameFromClassByID(Class<?> aClass, int resourceID)
                                                throws IllegalArgumentException{
                /* Get all Fields from the class passed. */
                Field[] drawableFields = aClass.getFields();

                /* Loop through all Fields. */
                for(Field f : drawableFields){
                        try {
                                /* All fields within the subclasses of R
                                 * are Integers, so we need no type-check here. */

                                /* Compare to the resourceID we are searching. */
                                if (resourceID == f.getInt(null))
                                        return f.getName(); // Return the name.
                        } catch (Exception e) {
                                e.printStackTrace();
                        }
                }
                /* Throw Exception if nothing was found*/
                throw new IllegalArgumentException();
        }

例如,使用:

代码语言:javascript
运行
复制
String resName = getResourceNameFromClassByID(R.drawable.class, R.drawable.icon);

结果将为icon

票数 2
EN

Stack Overflow用户

发布于 2011-06-24 13:40:25

在xml中,您可以添加标记来设置带有图像任何信息

示例

代码语言:javascript
运行
复制
<ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageview1" 
        android:background="@drawable/bg"
        android:tag="bg"/>

动态地,您可以使用imageView.setTag("any name")来设置任何数据以及图像和imageView.getTag()来检索图像信息

代码语言:javascript
运行
复制
String backgroundImageName = (String) imageView.getTag();
票数 21
EN

Stack Overflow用户

发布于 2013-05-31 15:06:11

尝试此

代码语言:javascript
运行
复制
  String resName = getResourceNameFromClassByID(R.drawable.class, R.drawable.imagename);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6463243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档