问题描述
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() 方法的主要目的是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!