2016-03-01 5 views
3

У меня есть макет, который содержит 2 ViewStubs. Они определяются следующим образом:Почему Android Studio не удается создать при доступе к ViewStub через ViewDataBinding?

<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"/> 

В моем адаптере, я пытаюсь получить доступ к ViewStub через ViewDataBinding генерируемого библиотекой DataBinding, в моем случае это 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. Я не уверен.

Или вы можете создать ViewStubProxy сами:

TitleBinding binding = DataBindingUtil.bind(view); 

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

viewStubProxy.setContainingBinding(binding);