web-dev-qa-db-ja.com

Android:変数のバインドとタグレイアウトを含めるための受け渡しは機能しますか?

データバインディングに問題があります。ドキュメントでは、includeタグを使用してカスタムレイアウトをホストし、バインディング変数を渡すことができると記載されています。 4.1.2電話とエミュレーターで試してみると、データはバインドされていないようで、メインのレイアウトフィールドのみがバインドされています。

これはメインレイアウトの私のコードです:

<layout>

<data>
    <variable
        name="Job"
        type="nz.co.certifi.CERTIFI.Model.JobModel" />
</data>
<ScrollView
    Android:background="@color/TransparentColor"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:id="@+id/scrollView"
    Android:layout_alignParentTop="true"
    Android:layout_alignParentLeft="true"
    Android:layout_alignParentStart="false"
    Android:layout_alignParentEnd="false"
    Android:layout_alignParentBottom="true"
    Android:layout_alignParentRight="true">


    <RelativeLayout
        Android:background="@color/TransparentColor"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent">

        <include
            app:Job="@{Job}"
            Android:id="@+id/layoutCertification"
            layout="@layout/view_certification_control"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:layout_alignParentTop="true"/>

これはlayoutCertificationです:

<layout>
<data>
    <variable
        name="Job"
        type="nz.co.certifi.CERTIFI.Model.JobModel" />
    <variable
        name="Form"
        type="nz.co.certifi.CERTIFI.Model.FormROIModel" />
</data>
<nz.co.certifi.CERTIFI.Control.EditTextWithModel
    xmlns:sparkNS="http://schemas.Android.com/apk/res/nz.co.certifi.CERTIFI"
    sparkNS:modelProperty="CertificateId"
    sparkNS:modelType="JobModel"
    sparkNS:validationType="required_only"
    Android:contentDescription="Job: Form Certificate Id"
    sparkNS:errorRequiredMessage="@string/error_reference_no_required"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:hint="@string/activity_roi_step_one_hint_reference_no"
    Android:textAppearance="?android:attr/textAppearanceLarge"
    Android:text="@{Job == null? Form.certificateId : Job.certificateId}"
    Android:textStyle="bold"
    Android:id="@+id/txtReferenceNo"
    Android:layout_alignParentTop="false"
    Android:layout_alignParentLeft="true"
    Android:layout_alignParentStart="true"
    Android:layout_toLeftOf="@+id/btnReference"
    Android:layout_toStartOf="@+id/btnReference"
    Android:layout_centerVertical="true" />
17
LittleFunny

はい、そうです。 http://developer.Android.com/tools/data-binding/guide.html#includes

メインレイアウト

<data>

    <variable
        name="plu"
        type="org.test.test.viewmodels.PluDetailViewModel" />
</data>
.
.
.
  <include
          layout="@layout/keypad_pludetail"
          Android:layout_width="match_parent"
          Android:layout_height="wrap_content"
          Android:layout_alignParentStart="true"
          bind:plu="@{plu}"
                        />

含まれているレイアウト

<data>

    <variable
        name="plu"
        type="org.test.test.viewmodels.PluDetailViewModel" />
</data>
.
.
.
 <Button
                Android:id="@+id/keypad_accept"
                style="@style/KeyPadButton"
                Android:layout_width="0dp"
                Android:layout_height="match_parent"
                Android:layout_weight="1"
                Android:text="@string/keypad_accept"
                Android:enabled="@{plu.isOK}"
                Android:onClick="@{plu.confirm}"
              />

フラグメント内

    binding = DataBindingUtil.inflate(inflater, R.layout.fragment_plu_details, container, false);
    binding.setPlu(pluDetailViewModel);
    binding.executePendingBindings();
19
pfulop