findViewById()的更好的代码结构

我很好奇在android中使用代码

findViewById(R.id.view_id).setVisibility(View.GONE); 

要么

 findViewById(R.id.view_id).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { } }); 

这是一个很好的结构,使用“findViewById”或添加任何视图上的任何监听器或应使用它

 Button buttonA=(Button)findViewById(R.id.view_id); buttonA.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { } }); 

提前致谢。

在这种情况下最重要的是一致性。 为了使你的代码可读,最好考虑这些事情,并制定适用于整个项目的代码准则。

除此之外,这是我的一般规则:

如果我只需要一次视图,就可以直接使用它:

 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(); 

它取决于你

 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扩展名。 :d

不,这不是好方法。 你可以使用ButterKnife android库。 你不需要'findViewById'或'setOnClickListener',相信我;)你的代码将是干净的!

http://jakewharton.github.io/butterknife/

我个人会建议使用图书馆,这为你做这个东西。 例如,你可以使用Butterknife 。 要使用它,添加到您的项目gradle文件这些行:

 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-Listeners:

 @OnClick(R.id.yourButtonId) public void yourOnClickMethod(View view) { // your logic } 

我会建议使用这个,因为它避免了很多样板和Butterknife有一些整洁的功能。 一探究竟!

对于我来说,绑定onCreate中的所有视图总是更容易,所以我把它们放在一个地方。

另一件事,这是有用的是butterknife库。 http://jakewharton.github.io/butterknife/