[JAVA] Résumé de l'étude de liaison de données Android Studio

Tout d'abord, la mise en page XML

:qiita.rb
<?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>
   <LinearLayout
       android:orientation="vertical"
       android:layout_width="match_parent"
       android:layout_height="match_parent">
       <TextView android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="@{user.firstName}"/>
       <TextView android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="@{user.lastName}"/>
   </LinearLayout>
</layout>

Ce à quoi je veux faire attention, c'est avec cette définition

<variable name="user" type="com.example.User" />

Quand,

<TextView android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="@{user.firstName}" />

La partie appelée à partir de ce ViewModel.

Et le suivant semble être une entité.

public class User {
  private final String firstName;
  private final String lastName;
  public User(String firstName, String lastName) {
      this.firstName = firstName;
      this.lastName = lastName;
  }
  public String getFirstName() {
      return this.firstName;
  }
  public String getLastName() {
      return this.lastName;
  }
}

L'expression @ {user.firstName} utilisée pour l'attribut text accède au champ firstName et à la méthode getFirstName () de cette dernière classe.

Maintenant, cela ressemble à l'activité qui connecte xml et l'entité.


@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
   User user = new User("Test", "User");
   binding.setUser(user);
}

Ce qui précède est comme Activity, il semble que la liaison est instanciée et que xml et l'entité utilisateur sont liés.

En outre, l'expression de liaison semble être capable d'attribuer l'écouteur de clic de la vue à la méthode onClickFriend (), comme ceci: ..

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
   <data>
       <variable name="handlers" type="com.example.MyHandlers"/>
       <variable name="user" type="com.example.User"/>
   </data>
   <LinearLayout
       android:orientation="vertical"
       android:layout_width="match_parent"
       android:layout_height="match_parent">
       <TextView android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="@{user.firstName}"
           android:onClick="@{handlers::onClickFriend}"/>
   </LinearLayout>
</layout>

Et il réagit au code suivant


public class MyHandlers {
    public void onClickFriend(View view) { ... }
}

Dans le cas de cette onSaveClick,


public class Presenter {
    public void onSaveClick(Task task){}
}

Cela ressemble à ceci:


<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent">
        <Button android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:onClick="@{() -> presenter.onSaveClick(task)}" />
    </LinearLayout>

Recommended Posts

Résumé de l'étude de liaison de données Android Studio
[Android / Kotlin] Résumé de l'interface utilisateur
Résumé du lien de développement Android
[Android] La variable de liaison de données est écrite dans camelCase
Remarques sur le studio Android
Vaincre Android Studio Partie 3-6
Vaincre Android Studio Partie 1 et Partie 2
RxJava (RxAndroid) + RxBus + Data Binding + échantillon de salle (basé sur Java 1.7) sur Android.