3

我有非常簡單的代碼,應該根據幾篇文章有關DataBinding工作,但由於某種原因它不是。RuntimeException:視圖標記不正確的視圖:null ViewAgendaItemBinding.bind()方法

我想與數據綁定一起使用RecycleView。

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

我不知道我是否正確地得到這一點。我非常確信,這是我試圖綁定數據的唯一地方,因爲它只是使用適配器與數據綁定的虛擬示例。 –

相關問題