Android 在按钮或视图上设置OnClickListener,哪个更好?

Android 在按钮或视图上设置OnClickListener,哪个更好?,android,Android,我想在按钮上设置OnClickListener。我应该将它投射到按钮还是让它进入视图?从下面的代码中可以看到,前者将视图转换为按钮,而后者将小部件转换为视图。后者更好,是因为它不需要做铸造,还是只是做同样的 这并不是说我不明白如何在按钮上设置click listener。我只是想从性能和最佳实践的角度来了解它 View.OnClickListener=newview.OnClickListener(){ @凌驾 公共void onClick(视图v){ } } Button Button=(B

我想在
按钮上设置
OnClickListener
。我应该将它投射到
按钮
还是让它进入
视图
?从下面的代码中可以看到,前者将
视图
转换为
按钮
,而后者将小部件转换为
视图
。后者更好,是因为它不需要做铸造,还是只是做同样的

这并不是说我不明白如何在按钮上设置click listener。我只是想从性能和最佳实践的角度来了解它

View.OnClickListener=newview.OnClickListener(){
@凌驾
公共void onClick(视图v){
}
}
Button Button=(Button)findViewById(R.id.Button);

setOnClickListener(listener)性能方面几乎没有区别。对于可读性,我建议使用按钮而不是视图。

性能方面几乎没有区别。对于可读性,我建议使用按钮而不是视图。

同样,您只保存演员阵容(性能)

如果你不需要视图对象,我更喜欢

findViewById(R.id.button).setOnClickListener(listener);

同样,您只保存演员阵容(表演)

如果你不需要视图对象,我更喜欢

findViewById(R.id.button).setOnClickListener(listener);

我相信在表现上没有区别。更改的是代码的可读性,因此,如果要为按钮设置clickListener,并且在代码的后面使用按钮实例,则可能需要使用“button”。setOnClickListener


由于大多数情况下,您不需要保留单击视图的引用,因此我建议使用类似于

的内容。我相信性能上没有差异。更改的是代码的可读性,因此,如果要为按钮设置clickListener,并且在代码的后面使用按钮实例,则可能需要使用“button”。setOnClickListener


因为,大多数情况下,您不需要保留单击视图的引用,所以我建议使用类似于

的方法。我非常确定性能上的差异是最小的,或者根本没有差异

但是,视图和按钮之间存在差异

为了缩短答案并尽可能具体,我将告诉您,如果您希望按钮尽可能“标准”(至少是Android标准),您应该使用按钮,但如果您想创建自定义按钮,那么您应该继续使用视图

更清楚一点,Buttom实际上是一个视图,因此当您使用按钮时,您实际上使用了一个视图,该视图是为成为按钮并像按钮一样工作而定制的


如果您需要更多详细信息,请询问,我将尝试帮助您或将一些文档链接到您。

我非常确定性能上的差异是最小的,或者根本没有差异

但是,视图和按钮之间存在差异

为了缩短答案并尽可能具体,我将告诉您,如果您希望按钮尽可能“标准”(至少是Android标准),您应该使用按钮,但如果您想创建自定义按钮,那么您应该继续使用视图

更清楚一点,Buttom实际上是一个视图,因此当您使用按钮时,您实际上使用了一个视图,该视图是为成为按钮并像按钮一样工作而定制的


如果您需要更多详细信息,请询问,我将尝试帮助您或将一些文档链接到您。

SetOnclick基本上取决于您的需要。如果您想查看此文件,请使用View。如果您想要按钮,那么使用按钮如果您查看的源代码,您会注意到,
setOnClickListener
仅在
View
中定义,因此计算上没有差异。Cast本身在检查Cast是否兼容(使用)方面的开销很小,SetOnclick基本上取决于您的需要。如果您想查看此文件,请使用View。如果您想要按钮,那么使用按钮如果您查看的源代码,您会注意到,
setOnClickListener
仅在
View
中定义,因此计算上没有差异。Cast本身在检查Cast是否兼容(使用)而不是OP方面的开销很小,但这是我第一次听到类似ButterKnife的东西。非常感谢你,这将使生活更有效率!还有,杰克·沃顿是一个英雄。不是OP,但这是我第一次听说像巴特刀这样的东西。非常感谢你,这将使生活更有效率!而且,杰克·沃顿是个英雄。