如何在 Android studio 中使用视图绑定为多个按钮创建 onClick 方法?
How to create onClick method for multiple buttons using View Binding in Android studio?
通过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);
}
您可以使用 Butterknife 库
检查这个库=https://github.com/JakeWharton/butterknife
TD LR 改为为每个视图实施侦听器
从 Android docs 此处您将看到视图绑定实际上所做的是为您的绑定布局创建 class。这意味着如果你有一个包含 3 个文本视图的布局,你的绑定 class 将有 3 个以它们的 ids
命名的属性
- textview1
- textview2
- textview3
其中每一个都已转换为正确的类型 (textView)。基本上消除了执行上面 post 代码的需要,因为如果你考虑一下,你正在做的是获取视图的 id 然后你进行转换,但正如我所说的绑定 class 已经为您完成了所有工作。
但是,如果您要做的是在多个视图中实现相同的代码,那么我建议将共享代码抽象为一个单独的函数,并在视图点击侦听器上设置该函数。
binding.textview1.setOnClickListener { sharedFunction() }
binding.textview2.setOnClickListener { sharedFunction() }
binding.textview3.setOnClickListener { sharedFunction() }
通过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);
}
您可以使用 Butterknife 库
检查这个库=https://github.com/JakeWharton/butterknife
TD LR 改为为每个视图实施侦听器
从 Android docs 此处您将看到视图绑定实际上所做的是为您的绑定布局创建 class。这意味着如果你有一个包含 3 个文本视图的布局,你的绑定 class 将有 3 个以它们的 ids
命名的属性- textview1
- textview2
- textview3
其中每一个都已转换为正确的类型 (textView)。基本上消除了执行上面 post 代码的需要,因为如果你考虑一下,你正在做的是获取视图的 id 然后你进行转换,但正如我所说的绑定 class 已经为您完成了所有工作。
但是,如果您要做的是在多个视图中实现相同的代码,那么我建议将共享代码抽象为一个单独的函数,并在视图点击侦听器上设置该函数。
binding.textview1.setOnClickListener { sharedFunction() }
binding.textview2.setOnClickListener { sharedFunction() }
binding.textview3.setOnClickListener { sharedFunction() }