setTag()此类方法和类型对象getTag()的主要目的是什么?View
setTag()
getTag()
View
我是否认为我可以将任意数量的对象与单个视图相关联?
假设您生成了一堆相似的视图。您可以OnClickListener为每个视图单独设置一个:
OnClickListener
button1.setOnClickListener(new OnClickListener ... ); button2.setOnClickListener(new OnClickListener ... ); ...
然后你必须onClick为每个视图创建一个独特的方法,即使它们做了类似的事情,比如:
onClick
public void onClick(View v) { doAction(1); // 1 for button1, 2 for button2, etc. }
这是因为onClick只有一个参数 a View,并且它必须从封闭范围内的实例变量或最终局部变量中获取其他信息。我们真正想要的是 从视图本身 中获取信息。
输入getTag/ setTag:
getTag
setTag
button1.setTag(1); button2.setTag(2);
现在我们可以为每个按钮使用相同的 OnClickListener:
listener = new OnClickListener() { @Override public void onClick(View v) { doAction(v.getTag()); } };
这基本上是视图拥有 记忆 的一种方式。