Android与onclick()的两种方式的数据绑定不起作用

时间:2018-12-28 10:23:22

标签: android onclick android-databinding

我正在尝试在我的代码中实现android双向数据绑定。我无法获得textview的onclick事件,该事件已用于其文本的两种方式的数据绑定。

ps:

  1. 我已启用数据绑定
  2. 我也将所有变量都设置为绑定

布局xml

        <TextView
                    android:id="@+id/likes"
                    android:clickable="true"
                    android:onClick="@{clickHandler::onClickEvents}"
                    android:text='@= 
 {com.coffeeshots.app.foodieapp.utils.Converter.convertIntToString(food.likes)}'
     </TextView>

`

数据绑定代码

<data>
    <variable 
       name="food" 
       type="com.coffeeshots.app.foodieapp.model.Food"/>

    <import type="com.coffeeshots.app.foodieapp.utils.Converter"/>

    <variable 
       name="clickHandler" 
       type="com.coffeeshots.app.foodieapp.utils.ClickHandler"/>
</data>

onclick方法

 public void onClickEvents(View view) {

          switch(view.getId()){
            case R.id.likes:
                if(!likesGiven){
                    likesGiven = true;
                    binding.likes.setText("1");
                    binding.dislikes.setClickable(false);
             }
                break;

          }

我认为问题是我为布局充气的方式,有人可以在这里帮助我吗?

  LayoutInflater layoutInflater = getLayoutInflater();

     binding= DataBindingUtil.inflate(layoutInflater,R.layout.activity_add_food,null,false);

    setContentView(binding.getRoot());

2 个答案:

答案 0 :(得分:0)

尝试一下:

android:onClick="@{(view)-> clickHandler.onClickEvents(view)}"

答案 1 :(得分:0)

是的,布局夸大是错误的。这样做:

ActivityAddFoodBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_add_food);
binding.setClickHandler(new ClickHandler());

您还可以在此处找到相关的官方示例:https://developer.android.com/topic/libraries/data-binding/expressions#binding_data