如何解决如何创建一个 BindingConverter 以允许我在 Android 上删除单击侦听器的 View 参数?
我有很多带有这个签名的方法:
public void onButtonClick(View view) {
}
大多数时候我不需要 view
参数,并且 AS 给我一个未使用的方法属性警告。
所需的解决方案:用于 Android 数据绑定的 @BindingConverter
,可将没有参数的函数转换为 View.ClickListener
。
我已经尝试过这个,但它在编译时失败,说明它与方法签名不匹配。为什么?
public interface MyAction {
void act();
}
@BindingConversion
public static View.OnClickListener convertaroony(final MyAction action) {
return new View.OnClickListener() {
@Override
public void onClick(View v) {
action.act();
}
};
}
<Button
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Clicky"
android:onClick="@{activity::onButtonClick}"/>
public class JavaActivity extends AppCompatActivity {
public void onButtonClick() {
Log.i("JAVA","I got a click,sir!");
}
}
解决方法
在此视图的上下文中单击视图时要调用的方法的名称。此名称必须对应于仅采用一个 View 类型参数的公共方法。例如,如果您指定 android:onClick="sayHello"
,则必须声明您的上下文(通常是您的 Activity)的 public void sayHello(View v)
方法。 --> <attr name="onClick" format="string" />
在 public void sayHello(View v)
中,视图 v
是您应用自定义 onClick 方法的一种
@Override
public void onClick(View v) {
}
注意:您可以通过跳转到 android:onClick
的来源找到相同的描述。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。