Я пытаюсь понять привязку данных Android.
Я заметил, что у него есть проблема с обнаружением значений друг друга, и мне нужно invalidate/restart
и clean project
довольно часто. Итак, я подумал, что мне нужно найти решение и решить свое любопытство под капотом.
Я понял, что они оба создаются при сборке проекта (наверное, во время компиляции?), Если я установил для файла макета формат привязки данных примерно так:
<layout>
<data>
</data>
<LinearLayout>
</LinearLayout>
</layout>
А также, XxxBindingImpl
наследует XxxBinding
следующим образом:
public class ActivityMainBindingImpl extends ActivityMainBinding {
// TODO
}
Если я установил в макете значение method expression
или listener expression
, класс будет выглядеть следующим образом:
public class ActivityMainBindingImpl extends ActivityMainBinding implements com.example.myapp.generated.callback.OnClickListener.Listener
{
// TODO
}
И два вида классов расположены в com/example/myapp/databinding
.
Я бы хотел знать роли обоих. И как / почему / когда они сделаны для чего. И различия ч / б две.