Я пытаюсь реализовать Android двухстороннюю привязку данных в моем коде. Я не могу получить событие onclick для текстового представления, которое я использовал для двухстороннего связывания данных для его текста.
пс:
<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>
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());
Да, ваш раздувание неверно. Делай так:
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
Попробуй это:
android:onClick="@{(view)-> clickHandler.onClickEvents(view)}"