我正在使用同一个onClick侦听器处理多个项目。使用具有多个视图的相同onClick侦听器
当我点击我想知道哪一个。
我知道我可以在getId()上做Switch语句,但宁愿能够获取该项目的名称。 有没有简单的方法来做到这一点?
我正在使用同一个onClick侦听器处理多个项目。使用具有多个视图的相同onClick侦听器
当我点击我想知道哪一个。
我知道我可以在getId()上做Switch语句,但宁愿能够获取该项目的名称。 有没有简单的方法来做到这一点?
我想你说的“获取名称”是指资源中的id字符串。所以你会有一个开关语句,如:
switch(view.getId()) {
case R.id.HomeButtonOne:
// Do Button One Action
break;
case R.id.HomeButtonTwo:
// Do Button Two Action
break;
}
否则请详细说明你正在努力实现什么。
我想要这个名字的原因是它给了我一个向量的指针。名字的最后一个字母是一个数字,它会给我指针。 – theblitz 2011-03-16 08:12:07
那么,如果你使用上面的代码,只需设置取决于视图ID向量的指针,如果速度是一个问题和记忆是不是一个巨大的关注,那么为什么不使用HashMap来获得更快的查找,使用id作为关键。注意:我要说的是停止将此称为“名称”,ID表示一个整数,并且您所指的“名称”是变量名称。为了找出变量名,上面的简单switch语句给了你。 – 2011-03-16 12:44:08
也许你可以添加一个独特的android:标记字符串到XML中的每个按钮。然后你可以使用view.getTag(“myTag”)来获取'数据'。我不确定这是你需要什么,但我发表评论,以防万一任何人都可以使用它。 – 2011-11-19 23:06:01
您有几个选项。
您可以使用您创建的类来扩展视图,并包含其他可识别信息。然后在onClick中,将视图转换为您的类类型。
您可以使用Adapter更好地管理您的观点。如果您显示的是数据视图而非惰性布局或Drawable,则此功能效果最佳。
这要归结为你想要存储什么和你正在查看什么。
只是要它实现OnClickListner类,并设置一个实例,以您的观点:
class MyListener implements OnClickListener() {
// ...
}
MyListener listener = new MyListener();
View view = (View) findViewById(R.id.myViewId);
view.setOnClickListener(listener);
view = (View) findViewById(R.id.myAnotherViewId);
view.setOnClickListener(listener);
...
因为它们都一样,它有什么用?我曾考虑为每个项目编写一个监听器,但担心多个实例的开销。 – theblitz 2011-03-16 08:15:49
什么时,你说该项目的名称意思? – 2011-03-07 20:11:45