2016-03-01 50 views
3

我有一個佈局定義,其中包含2 ViewStubs。它們的定義如下:爲什麼Android Studio在通過ViewDataBinding訪問ViewStub時無法構建?

<ViewStub 
     android:id="@+id/top_divider_stub" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inflatedId="@+id/top_divider_layout" 
     android:layout="@layout/include_line_separator_horizontal"/> 

<ViewStub 
     android:id="@+id/bottom_divider_stub" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inflatedId="@+id/bottom_divider_layout" 
     android:layout="@layout/include_line_separator_horizontal"/> 

在我的適配器,我試圖通過數據綁定庫產生的ViewDataBinding訪問ViewStub,在我的情況下,它TitleBinding。嘗試執行以下操作會導致錯誤。

TitleBinding binding = DataBindingUtil.bind(view); 
ViewStub topDividerStub = binding.topDividerStub; 
ViewStub bottomDividerStub = binding.bottomDividerStub; 

我收到此錯誤,並且應用程序無法編譯。

Error:(31, 50) error: incompatible types: ViewStubProxy cannot be converted to ViewStub 

我工作圍繞它通過設置變量輸入ViewStubProxy,允許它編譯,但給人一種不兼容的類型語法高亮顯示錯誤。如果可能的話,我想知道這樣做的正確方法。

這工作...

ViewStubProxy topDividerStub = binding.topDividerStub; 
ViewStubProxy bottomDividerStub = binding.bottomDividerStub; 

error screenshot

回答

0

得到的我有同樣的問題。看來這是DataBinding的一個bug。我不確定。

或者你可以創建一個ViewStubProxy自己:

TitleBinding binding = DataBindingUtil.bind(view); 

ViewStubProxy viewStubProxy = new ViewStubProxy((ViewStub) view.findViewById(R.id.viewStub)); 

viewStubProxy.setContainingBinding(binding); 
相關問題