【问题标题】:How to create onClick method for multiple buttons using View Binding in Android studio?如何在 Android Studio 中使用 View Binding 为多个按钮创建 onClick 方法?
【发布时间】:2020-09-02 17:06:16
【问题描述】:

这个很简单通过view.getId()创建onClick

public void buttonOnClick(View view)
{
 switch(view.getId())
 {
  case R.id.button1:
  // Code for button 1 click
  break;

  case R.id.button2:
  // Code for button 2 click
  break;

  case R.id.button3:
  // Code for button 3 click
  break;
 }
}

但是是否可以使用视图绑定来创建它,或者我也可以为每个视图实现侦听器?

P.S 视图绑定是指使用一种新的视图声明方式

private ResultProfileBinding binding;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    binding = ResultProfileBinding.inflate(getLayoutInflater());
    View view = binding.getRoot();
    setContentView(view);
}

【问题讨论】:

    标签: java android view listener


    【解决方案1】:

    TD LR改为为每个视图实现侦听器

    Android docs 这里你会看到视图绑定实际上是为你的绑定布局创建一个类,这意味着如果你有一个包含 3 个文本视图的布局,你的绑定类将有 3 个属性以他们的身份命名

    • 文本视图1
    • textview2
    • 文本视图3

    每个都已经转换为正确的类型(textView),基本上消除了执行上面发布的代码的需要,因为如果你关心它,你正在做的就是获取视图的 id 并且你做cast 但正如我所说,绑定类已经为您完成了所有工作。

    但是,如果您尝试在多个视图中实现相同的代码,那么我建议将共享代码抽象为一个单独的函数,并将该函数设置在视图单击侦听器上。

    binding.textview1.setOnClickListener { sharedFunction() }
    binding.textview2.setOnClickListener { sharedFunction() }
    binding.textview3.setOnClickListener { sharedFunction() }
    

    【讨论】:

    • 我明白了。出于某种原因,我想用一种方法来移动所有听众,甚至不理解这是毫无意义的。谢谢
    【解决方案2】:

    你可以使用 Butterknife 库

    检查这个库=https://github.com/JakeWharton/butterknife

    【讨论】:

    • 他们说我最好切换到视图绑定,我想我不会使用它
    • ButterKnife 已弃用。甚至创作者都建议我们切换到 ViewBinding!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 2016-04-07
    相关资源
    最近更新 更多