首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更好的findViewById()代码结构

更好的findViewById()代码结构
EN

Stack Overflow用户
提问于 2017-05-23 16:18:48
回答 5查看 170关注 0票数 0

我对使用android中的代码很好奇,比如

代码语言:javascript
复制
findViewById(R.id.view_id).setVisibility(View.GONE);

或者

代码语言:javascript
复制
findViewById(R.id.view_id).setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {

                }
            });

这是一个使用"findViewById“或在任何视图上添加任何侦听器的好结构,还是应该像这样使用它

代码语言:javascript
复制
Button buttonA=(Button)findViewById(R.id.view_id);
buttonA.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {

                }
            });

提前谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-05-23 16:27:17

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

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

如果我只需要一个视图一次,我会内联使用它:

代码语言:javascript
复制
findViewById(R.id.view.id).someMethod();

但如果我在一个方法中多次需要它,我会创建一个本地变量:

代码语言:javascript
复制
View view = findViewById(R.id.view_id);
view.someMethod();
view.someOtherMethod();

如果我需要在几个方法中使用视图,我会声明一个类变量:

代码语言:javascript
复制
private View view;
...
this.view = findViewById(R.id.view_id);
view.someMethod();
view.someOtherMethod();
票数 3
EN

Stack Overflow用户

发布于 2017-05-23 16:24:35

全靠你了

代码语言:javascript
复制
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。:D

票数 1
EN

Stack Overflow用户

发布于 2017-05-23 17:18:48

我个人推荐使用一个库,它可以为你做这些事情。例如,您可以使用Butterknife。要使用它,请将以下行添加到项目gradle文件中:

代码语言:javascript
复制
compile 'com.jakewharton:butterknife:8.6.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0'

然后,当你在你的活动中,你可以这样定义你的按钮:

代码语言:javascript
复制
@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:

代码语言:javascript
复制
@OnClick(R.id.yourButtonId)
public void yourOnClickMethod(View view) {
  // your logic
}

我会推荐使用它,因为它避免了很多样板文件,而且Butterk刀有一些整洁的特性。看看这个!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44129407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档