Odpowiedź brzmi "tak", zaczynając od Marshmallow i wracając do Gingerbread z biblioteką kompatybilności, Android ma teraz data binding. Nie wyodrębnia odniesień jako takich, ale robi to, co chcesz.
Więc teraz zamiast
<LinearLayout …>
<TextView android:id="@+id/name"/>
<TextView android:id="@+id/lastName"/>
</LinearLayout>
Mamy
<LinearLayout …>
<TextView android:text="@{user.name}"/>
<TextView android:text="@{user.lastName}"/>
</LinearLayout>
A zamiast tego kodu Java z obcego kotła kodu płyty
private TextView mName
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
mName = (TextView) findViewById(R.id.name);
mLastName = (TextView) findViewById(R.id.lastName);
}
public void updateUI(User user) {
if (user == null) {
mName.setText(null);
mLastName.setText(null);
} else {
mName.setText(user.getName());
mLastName.setText(user.getLastName());
}
}
teraz mamy (która idzie krok powyżej wartości Butterknife w ramach metody updateUI)
private ActivityMainBinding mBinding;
protected void onCreate(Bundle savedInstanceState) {
mBinding = DataBindingUtil.setContentView(this,
R.layout.activity_main);
}
public void updateUI(User user) {
mBinding.setUser(user);
}
Udoskonalenia wykraczają poza to, więc proponuję przejrzenie następującego presentation podanego przez inżynierów Google, George'a Mount'a i Yigita Boyara.
Warto zainwestować w to. Wszystko to odbywa się w czasie kompilacji, więc nie ma ponoszonej kary w czasie wykonywania. I jak powiedziałem na początku, jest kompatybilny wstecz do Androida 2.3, więc naprawdę nie ma powodu, aby nie używać tej nowej funkcji.
Szkoda, że obecnie nie jest kompatybilny z AS 2.2.2 –
swoje dobre, ale zbyt wiele za dużo kodu mylące na górze metody onCreate po 40 -50 pola są tam –
@VishalPatel Jeśli chcesz uzyskać dostęp do wszystkich z tych pól nie masz innego wyjścia. – skywall