Android - JAVA: привязка не работает для пользовательского представления, добавленного программно - PullRequest
0 голосов
/ 02 мая 2020

Я добавляю новое представление программно в al oop в framgemt.

    PurchaseItem purchaseItem =  new PurchaseItem();
    ProductItem purchaseItemView = new ProductItem(getContext(),0,purchaseItem);
    binding.purchaseItems.addView(purchaseItemView);

пользовательский класс представления

public class ProductItem  extends LinearLayout {
  public ProductItem(Context context, Integer idx,PurchaseItem pItem) {
        super(context);
        purchaseItem = pItem;
        index = idx;

        inflate(context, R.layout.purchase_item, this);
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        purchaseItem.setWeight("data "+index); // For testing Purpose : It is not working

        binding = PurchaseItemBinding.inflate(inflater);//DataBindingUtil.inflate(inflater,R.layout.purchase_item,this, true);
        binding.setPurchaseItem(purchaseItem);
        purchaseItem.setQuantity("qty");  // For testing Purpose : It is not working
        binding.weight.setText("abc");  // For testing Purpose : It is not working

        init(context);
    }
}

Макет выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <data>
        <variable name="purchaseItem" type="com.testapp.entities.PurchaseItem"/>

    </data>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@{purchaseItem.weight}"

        ></TextView>

    <EditText
        android:id="@+id/weight"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:textAppearanceLarge"
        android:textColor="#4689C8"
        android:textStyle="bold"
        android:text="@={purchaseItem.weight}"
        />

</LinearLayout>
</layout>

Проблема в том, что EditView и TextView становятся пустыми и не связаны с моделью. Я тоже не получаю никакой ошибки. Приложение собирается правильно и установлено правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...