BindingAdapterを使用して、TextInputLayoutフィールドの検証を実装します。私のオブジェクトにObservableBoolean 'valid'があります。これは、変更されると、バインディングアダプタを実行して、フィールドにエラーメッセージを設定/クリアすることになります。それは素晴らしい作品が、私は今、次の警告を表示し、それに対処することを望んだ:BindingAdapter廃止予定の警告
警告:直接 メソッドのパラメータとしてObservableFieldの使用およびプリミティブいとこが廃止されており、サポートはすぐに削除されます。
@BindingAdapter({"error", "errorMsg"}) public static void setError(TextInputLayout view, ObservableBoolean isValid, String errorMsg){ String errorString = isValid.get() ? null : errorMsg; view.setError(errorString); }
そしてバインディング式:メソッドで代わりにパラメータBindingUtils.setError
として 内容アダプタ使用
<android.support.design.widget.TextInputLayout
app:error="@{viewModel.name.valid}"
app:errorMsg="@{@string/template_details_error_name_required}"
問題に対処するために、私は、アダプタを修正し、次のようにバインディング式を追加しましたが、これにより新しい廃止予定の警告が表示されます:
警告: 式のObservasbleFieldsで明示的に 'get()'を呼び出さないでください。このサポートはすぐに削除されます。 'viewModel.name.valid.get()'
修正アダプタ:
@BindingAdapter({"error", "errorMsg"})
public static void setError(TextInputLayout view, Boolean isValid, String errorMsg){
修正バインディング式:
<android.support.design.widget.TextInputLayout
app:error="@{viewModel.name.valid.get()}"
app:errorMsg="@{@string/template_details_error_name_required}"
今これをacheiveする推奨方法は何ですか?
このスレッドに関連するスレッド Android Databinding BindingAdapter Error BindingAdaptersでObservablesの有効なユースケースがあるかどうか質問しています。おそらくこれは一つです。
タイプがラッピングされていないことを説明していただきありがとうございます。今は完璧に動作します。 – sidecarcat