gpt4 book ai didi

android - 如何使用数据绑定(bind)在 checkChanged 事件上绑定(bind) RadioGroup 上的方法

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:50:13 24 4
gpt4 key购买 nike

我在互联网上搜索如何在 RadioGroup 上执行新的很酷的 android 数据绑定(bind),但我没有找到一篇关于它的博客文章。

这是一个简单的场景,基于所选的单选按钮,我想使用 android 数据绑定(bind)附加一个回调事件。我在 xml 部分找不到任何允许我定义回调的方法。

就像这里是我的 RadioGroup:

      <RadioGroup
android:id="@+id/split_type_radio"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:checkedButton="@+id/split_type_equal"
android:gravity="center"
<!-- which tag ? -->
android:orientation="horizontal">

...

</RadioGroup>

我如何附加一个将在 RadioGroupcheckChnged 事件上调用的处理程序方法,该事件将使用数据绑定(bind)触发?

我尝试在布局文件中使用 onClick(不知道是否相同)并在 Activity 中定义方法,并在布局文件中使用它定位它:

   <variable
name="handler"
type="com.example.MainActivity"/>

...
<RadioGroup
android:onClick="handler.onCustomCheckChanged"
.. >

然后像这样定义方法 onCustomCheckChanged:

public void onCustomCheckChanged(RadioGroup radio, int id) {
// ...
}

但是,它给了我编译错误:

Error:(58, 36) Listener class android.view.View.OnClickListener with method onClick did not match signature of any method handler.onCustomCheckChanged

我看到很多博客都提到使用 RadioGroup 是可能的,但没有一个真正说明如何。我如何使用 data-binding 处理这个问题?

最佳答案

在挖掘了一堆方法之后,我找到了 this关于 SO 的问题帮助我理解了如何绑定(bind)监听器的单一方法。

这是对 RadioGroup 的处理:

RadioGroup 监听器中,您有一个方法 onCheckedChanged(RadioGroup g, int id)。因此,您可以将该方法的实例作为布局文件中的变量传递并调用具有相同签名的方法,从而将该方法直接绑定(bind)到您的处理程序或 Activity 。

所以像这样调用布局文件:

  <RadioGroup
android:id="@+id/split_type_radio"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:checkedButton="@+id/split_type_equal"
android:gravity="center"
android:onCheckedChanged="@{handler.onSplitTypeChanged}"
android:orientation="horizontal">

...

</RadioGroup>

在我的 Activity 或处理程序中,我只需要提供具有相同名称和签名的方法,如下所示:

public void onSplitTypeChanged(RadioGroup radioGroup,int id) {
// ...
}

只需确保方法是公开的。

注意:这适用于任何(大多数,我还没有尝试过所有)监听器方法。与 EditText 一样,您可以提供 android:onTextChanged 等。

关于android - 如何使用数据绑定(bind)在 checkChanged 事件上绑定(bind) RadioGroup 上的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39427178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com