Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android findViewById()的更好的代码结构_Android_Performance_Android Layout - Fatal编程技术网

Android findViewById()的更好的代码结构

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

我对在类似android的系统中使用代码很好奇

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有更多属性,这只是两个属性。