Android 单独定义OnClickListener还是在setOnClickListener()内定义?
定义单击侦听器时,我正在填充适配器的Android 单独定义OnClickListener还是在setOnClickListener()内定义?,android,onclicklistener,getview,Android,Onclicklistener,Getview,定义单击侦听器时,我正在填充适配器的getView(),这让我想知道: 性能方面,这两种实现之间是否存在差异: 分别定义onClickListener: 及 将onClickListener定义为参数: 由于经常调用getView(),我的想法是,即使实现上的细微差异也会对应用程序的性能产生很大影响。但我不确定 那么,就性能/内存而言,建议采用上述哪一项?或者说,它们有什么不同吗?这实际上取决于匿名类中有多少onclick侦听器。 最好实现一次单击侦听器,并将其设置为要获取单击事件的所有视图,
getView()
,这让我想知道:
性能方面,这两种实现之间是否存在差异:
分别定义onClickListener:
及
将onClickListener定义为参数:
由于经常调用
getView()
,我的想法是,即使实现上的细微差异也会对应用程序的性能产生很大影响。但我不确定
那么,就性能/内存而言,建议采用上述哪一项?或者说,它们有什么不同吗?这实际上取决于匿名类中有多少onclick侦听器。 最好实现一次单击侦听器,并将其设置为要获取单击事件的所有视图,并使用OnClick(视图v)中的视图id对单击进行排序
您正在两个代码段中创建OnClickListener,因此如果在getView()中创建,则不会对性能产生任何好处。您可以让您的适配器实现OnClickListener,然后将OnClickListener设置到您的适配器,这样每个视图就不会生成OnClickListener。因此,您的解决方案似乎比上述两种情况都好。另外,我认为传递视图的id而不是视图会使它更加高效。我不确定如何传递int id而不是View对象,因为OnClickListener只有一个方法可以将View作为参数传递。5或6个点击监听器并没有太大的负载,但最好只实现一个视图,并通过视图id来执行特定的操作。是的,你是对的。我的坏(我忘了它是超驰的)。一次onClick也会更干净,因为我的
getView()
看起来很凌乱!
View.OnClickListener mClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) { //... }
};
mView.setOnClickListener(mClickListener);
mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) { //... }
});
public void onClick(View v) {
switch (v.getId()) {
case R.id.some_view_id:
doSomething();
break;
}
}