Die Antwort ist ein qualifizierter „Ja“, mit Eibisch beginnen und zurück nach Lebkuchen mit seiner Kompatibilität Bibliothek zu gehen, Android jetzt data binding hat. Es extrahiert nicht die Referenzen als solche, aber es tut ziemlich genau das, was Sie wollen.
So, jetzt statt
<LinearLayout …>
<TextView android:id="@+id/name"/>
<TextView android:id="@+id/lastName"/>
</LinearLayout>
Wir haben
<LinearLayout …>
<TextView android:text="@{user.name}"/>
<TextView android:text="@{user.lastName}"/>
</LinearLayout>
Und statt mit diesem Java-Code mit Fremdkesselblech Code
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());
}
}
Wir haben jetzt (die eine geht Schritt über das, was Butterknife innerhalb seiner updateUI-Methode tut)
Und die Verbesserungen gehen noch darüber hinaus, so würde ich vorschlagen, dass Sie die folgenden presentation von den Google-Ingenieuren, George Mount und Yigit Boyar gegeben.
Es ist die Investition wert, durchzukommen. All dies wird zur Kompilierzeit durchgeführt, so dass keine Laufzeitnachteile entstehen. Und wie ich zu Beginn gesagt habe, ist es abwärtskompatibel bis Android 2.3, also gibt es wirklich keinen Grund, diese neue Funktionalität nicht zu verwenden.
Schade, es ist derzeit nicht kompatibel mit AS 2.2.2 –
Es ist gut, aber zu viel zu viel Code an der Spitze der oncreate Methode verwirrend, wenn 40 -50 Felder gibt es –
@VishalPatel Wenn Sie alle zugreifen möchten Von diesen Feldern hast du keine andere Wahl. – skywall