View 的 setTag() getTag() 方法的主要目的是什么? [英] What is the main purpose of setTag() getTag() methods of View?

查看:27
本文介绍了View 的 setTag() getTag() 方法的主要目的是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

View 类型对象的setTag()getTag() 等方法的主要用途是什么?

What is the main purpose of such methods as setTag() and getTag() of View type objects?

我认为我可以将任意数量的对象与单个视图关联是否正确?

Am I right in thinking that I can associate any number of objects with a single View?

推荐答案

假设您生成了一堆相似的视图.您可以为每个视图单独设置一个 OnClickListener:

Let's say you generate a bunch of views that are similar. You could set an OnClickListener for each view individually:

button1.setOnClickListener(new OnClickListener ... );
button2.setOnClickListener(new OnClickListener ... );
 ...

然后您必须为每个视图创建一个唯一的 onClick 方法,即使它们执行类似的操作,例如:

Then you have to create a unique onClick method for each view even if they do the similar things, like:

public void onClick(View v) {
    doAction(1); // 1 for button1, 2 for button2, etc.
}

这是因为onClick只有一个参数,一个View,它必须从封闭范围内的实例变量或最终局部变量中获取其他信息.我们真正想要的是从视图本身获取信息.

This is because onClick has only one parameter, a View, and it has to get other information from instance variables or final local variables in enclosing scopes. What we really want is to get information from the views themselves.

输入getTag/setTag:

button1.setTag(1);
button2.setTag(2);

现在我们可以为每个按钮使用相同的 OnClickListener:

Now we can use the same OnClickListener for every button:

listener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        doAction(v.getTag());
    }
};

这基本上是视图拥有内存的一种方式.

It's basically a way for views to have memories.

这篇关于View 的 setTag() getTag() 方法的主要目的是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆