web-dev-qa-db-ja.com

データバインディングジェネリック変数

データバインディング変数のジェネリック型を定義する方法は?

次のコードはコンパイルされません。

<data>
    <variable
        name="viewModel"
        type="com.example.viewmodel.ViewModel<Model>"/>
</data>
18
Bolein95

以下に示すように、<Model>をエスケープする必要があります。

<data>
    <variable
        name="viewModel"
        type="com.example.viewmodel.ViewModel&lt;Model>"/>
</data>

Android Studioには引き続き「シンボルを解決できません」というエラーが表示されますが、XMLはコンパイルされます。これは既知の問題です。 From Android Studioのデータバインディングのサポート

注:配列およびObservableクラスなどのジェネリック型は、エラーがない場合にエラーを表示する場合があります。

27
Mark Lu

これを試してください:

<data>
<variable
    name="viewModel"
    type="com.example.viewmodel.ViewModel&lt;Model&gt;"/>
</data>

&lt;<および&gt;>を担当します。

5
Hasan Abdullah

上記の例のようなものを設定できます。

<data>
    <import type="com.example.path.Model"/>
    <variable
        name="obj"
        type="com.example.viewmodel.ViewModel&lt;Model&gt;"
        />
</data>

注:モデルの最後に「>」または「&gt;」と書くことができます。

エラー表示を回避するには、使用されているオブジェクトタイプを示す行を追加することを忘れないでください。

<import type="com.example.path.Model"/>
1
user1540907

XMLには左三角括弧があります。 XMLはそのようには機能しません。試してみてください

<data>
    <variable
        name="viewModel"
        type="com.example.viewmodel.ViewModel&lt;Model>"/>
</data>
1