View 的 setTag() getTag() 方法的主要目的是什么? [英] What is the main purpose of setTag() getTag() methods of View?
问题描述
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屋!