Документация Android отлично описывает, как можно создать класс привязки с помощью XML-файла макета. Но у меня есть пара вопросов.
Есть ли способ создать класс привязки данных для пользовательского представления, которое создается программно? Например, предположим, что у меня есть два настраиваемых класса представления, и я хочу программно связать с ними один и тот же объект модели представления без использования XML. Классы следующие:
class MyViewModel {
}
class MyCustomView extends View {
}
class MyAnotherCustomView extends MyCustomView {
}
Теперь скажем, я создаю экземпляр MyCustomView/MyAnotherCustomView, используя:
MyCustomView customView = new MyCustomView(context);
Как в этом случае использовать привязку данных? Возможно ли это с помощью официальной структуры привязки данных Android? Если нет, то какие другие фреймворки/библиотеки доступны или рекомендуются для достижения этой цели?
Мой второй вопрос является продолжением первого вопроса. Допустим, невозможно достичь того, чего я хочу в своем первом вопросе. Затем мне нужно будет определить файл my_custom_view.xml
. Это будет выглядеть примерно так:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="user" type="com.example.User"/>
</data>
<com.example.name.MyCustomView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@{user.firstName}"/>
</layout>
Теперь, если я хочу использовать MyAnotherCustomView, который является подклассом MyCustomView, сохраняя логику привязки такой же, мне придется создать новый файл xml my_another_custom_view.xml
только для замены MyCustomView на MyAnotherCustomView для определения той же привязки?
DataBindingUtil#bind(View root)
- person pskink   schedule 01.12.2016"and I want to bind the same view model object to them programmatically without using any xml
о, извините, я пропустил это, так чего именно вы пытаетесь достичь? привязки определены только в xml, так как же вы хотите определить сопоставление между данными и представлениями? - person pskink   schedule 01.12.2016