3

私はDataBindingに関するいくつかの記事に従って動作するはずのかなり簡単なコードを持っていますが、何らかの理由でそうではありません。RuntimeException:Viewタグがビューで正しくありません:ViewAgendaItemBinding.bind()メソッドのnull

私はRecycleViewとDatabindingを併用しようとしています。

class ItemViewHolder extends RecyclerView.ViewHolder{ 

    ViewAgendaItemBinding binding; 

    public ItemViewHolder(View itemView) { 
     super(itemView); 
     binding = ViewAgendaItemBinding.bind(itemView); //this is line where it's throw an error. 
    } 
} 

私はこのbindメソッドのバージョンを生成してチェックし、それはだが、そのようになっています。非常に奇妙である

public static ViewAgendaItemBinding bind(android.view.View view, android.databinding.DataBindingComponent bindingComponent) { 
     if (!"layout/view_agenda_item_0".equals(view.getTag())) { 
      throw new RuntimeException("view tag isn't correct on view:" + view.getTag()); 
     } 
     return new ViewAgendaItemBinding(bindingComponent, view); 
    } 

を。私にはlayout/view_agenda_item_0がないので。このビューはlayout/view_agenda_itemを使用する必要があり、私は明らかにタグを設定しません。しかし、私はこの正確な要素のためにこれらのタグを設定しても、まだ動作していません。

これを解決するにはどうすればよいですか?

P.S.しかし、このコードをViewAgendaItemBinding.bind(itemView)に変更すると、DataBindingUtils.bind(itemView)が動作します。それはデータバインディングライブラリの問題ですか?

答えて

2

データバインディングは、コンパイル時にレイアウトファイルを書き換えて自動的にそのタグを追加します。

DataBindingUtils.bindビューに既存のバインディングがあるかどうかを確認して再利用します。そのビューのデータバインディングを初期化したような感じです。私は同じように行うにはViewAgendaItemBinding.bindメソッドを変更する必要があると思います。

+0

私はそれを正しく理解していません。データバインディングでアダプタを使用するというダミーの例だったので、これがデータをバインドしようとしている1つの場所だと確信しています。 –

関連する問題