Android findViewById()的更好的代码结构
我对在类似android的系统中使用代码很好奇Android findViewById()的更好的代码结构,android,performance,android-layout,Android,Performance,Android Layout,我对在类似android的系统中使用代码很好奇 findViewById(R.id.view_id).setVisibility(View.GONE); 或 使用“findViewById”或在任何视图上添加任何侦听器,或者像这样使用它,这是一个好的结构吗 Button buttonA=(Button)findViewById(R.id.view_id); buttonA.setOnClickListener(new OnClickListener() { @O
findViewById(R.id.view_id).setVisibility(View.GONE);
或
使用“findViewById”或在任何视图上添加任何侦听器,或者像这样使用它,这是一个好的结构吗
Button buttonA=(Button)findViewById(R.id.view_id);
buttonA.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
提前谢谢。这取决于你
Button buttonA=(Button)findViewById(R.id.view_id);
//can be like this
buttonA.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
//or like this
buttonA.setOnClickListener(new MyOwnClickListener());
public class MyOwnClickListener implements View.OnClickListener{
@Override
public void onClick(View v) {
}
}
如果您想要更清晰的视图,请使用ButterKnife
如果您想要更清晰的视图,请使用Kotlin和Kotlin扩展名:这取决于你
Button buttonA=(Button)findViewById(R.id.view_id);
//can be like this
buttonA.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
//or like this
buttonA.setOnClickListener(new MyOwnClickListener());
public class MyOwnClickListener implements View.OnClickListener{
@Override
public void onClick(View v) {
}
}
如果您想要更清晰的视图,请使用ButterKnife
如果您想要更清晰的视图,请使用Kotlin和Kotlin扩展名:在这种情况下,最重要的是一致性。为了使代码具有可读性,最好考虑这些问题,并制定适用于整个项目的代码指南 除此之外,以下是我的一般规则: 如果我只需要一次视图,我会内联使用它:
findViewById(R.id.view.id).someMethod();
但如果我在一个方法中多次需要它,我会创建一个本地变量:
View view = findViewById(R.id.view_id);
view.someMethod();
view.someOtherMethod();
如果我需要在几个方法中使用视图,我会声明一个类变量:
private View view;
...
this.view = findViewById(R.id.view_id);
view.someMethod();
view.someOtherMethod();
在这种情况下,最重要的是一致性。为了使代码具有可读性,最好考虑这些问题,并制定适用于整个项目的代码指南 除此之外,以下是我的一般规则: 如果我只需要一次视图,我会内联使用它:
findViewById(R.id.view.id).someMethod();
但如果我在一个方法中多次需要它,我会创建一个本地变量:
View view = findViewById(R.id.view_id);
view.someMethod();
view.someOtherMethod();
如果我需要在几个方法中使用视图,我会声明一个类变量:
private View view;
...
this.view = findViewById(R.id.view_id);
view.someMethod();
view.someOtherMethod();
不,这不是个好办法。您可以使用ButterKnife android库。你不需要“findViewById”或“setOnClickListener”,相信我;)你的代码将是干净的
不,这不是个好办法。您可以使用ButterKnife android库。你不需要“findViewById”或“setOnClickListener”,相信我;)你的代码将是干净的
我个人建议使用一个库,它可以为您提供这些信息。 例如,您可以使用。要使用它,请将以下行添加到项目渐变文件中:
compile 'com.jakewharton:butterknife:8.6.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0'
然后,当您在活动中时,您可以这样定义按钮:
@BindView(R.id.your_button_id)
Button myButton;
@Override
public void onCreate(Bundle bundle) {
setContentView(R.layout.your_layout);
Butterknife.Bind(this);
//From here on, your button is available.
}
您还可以在Butterknife的帮助下为按钮实现onClick侦听器:
@OnClick(R.id.yourButtonId)
public void yourOnClickMethod(View view) {
// your logic
}
我建议使用这个,因为它避免了大量的样板文件,而且Butterknife有一些简洁的特性。看看 我个人建议使用一个库,它可以为您提供这些信息。 例如,您可以使用。要使用它,请将以下行添加到项目渐变文件中:
compile 'com.jakewharton:butterknife:8.6.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0'
然后,当您在活动中时,您可以这样定义按钮:
@BindView(R.id.your_button_id)
Button myButton;
@Override
public void onCreate(Bundle bundle) {
setContentView(R.layout.your_layout);
Butterknife.Bind(this);
//From here on, your button is available.
}
您还可以在Butterknife的帮助下为按钮实现onClick侦听器:
@OnClick(R.id.yourButtonId)
public void yourOnClickMethod(View view) {
// your logic
}
我建议使用这个,因为它避免了大量的样板文件,而且Butterknife有一些简洁的特性。看看 对我来说,在onCreate中绑定所有视图总是比较容易,所以我将它们放在一个地方
另一个有用的东西是butterknife库 对我来说,在onCreate中绑定所有视图总是比较容易,所以我将它们放在一个地方
另一个有用的东西是butterknife库 这取决于你两种方法。使用上述其中一种方法对应用程序性能或代码执行没有影响?不。它只会减少你的代码。这取决于你两种方法。使用上述一种方法对应用程序性能或代码执行没有影响?不。它只会减少你的代码。我使用过butterknife,但你可以吗举例说明这不是一个好方法?在代码中,必须为组件编写findViewById。但是在butterknife中,只需@BindView(R.id.title)TextView title;'够了。并且必须编写setOnClickListener所有操作项。在butter knife中,您编写一个函数并在其开头添加@OnClick(R.id.buttonId)注释。不需要setonClickListener。这将使您的代码易于理解。ButterKnife有更多属性,这只是两个属性。我使用过ButterKnife,但您能否举例说明这不是一个好方法?在您的代码中,您必须为组件编写findViewById。但是在butterknife中,只需@BindView(R.id.title)TextView title;'够了。并且必须编写setOnClickListener所有操作项。在butter knife中,您编写一个函数并在其开头添加@OnClick(R.id.buttonId)注释。不需要setonClickListener。这将使您的代码易于理解。ButterKnife有更多属性,这只是两个属性。