Databinding和Viewbinding应用与实践

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>
        <import type="java.util.List" />
        <import type="java.util.Map" />

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

        <variable
            name="view"
            type="android.view.View" />

        <variable
            name="list"
            type="List&lt;String>" />
        
        <variable
            name="index"
            type="Integer" />
        
        <variable
            name="map"
            type="Map&lt;String,Object>" />

        <variable
            name="key"
            type="String" />

        <variable name="presenter"
            type="com.bw.day0128mvvm.Presenter" />

        <variable
            name="userinfo"
            type="com.bw.day0128mvvm.UserInfo" />
    </data>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity2">

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

        <TextView
            android:text="@{String.valueOf(user.age)}"
            android:visibility="@{user.age >= 20 ? view.VISIBLE : view.GONE}"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
        </TextView>


        <!--视图引用-->
        <EditText
            android:id="@+id/et_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        </EditText>

        <TextView
            android:text="@{etText.text}"
            android:textStyle="bold"
            android:textColor="#C10505"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
        </TextView>


        <!--List集合-->
        <TextView
            android:text="@{list.get(index)}"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
        </TextView>

        <!--Map集合-->
        <TextView
            android:text="@{String.valueOf(map.get(key))}"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

        <TextView
            android:text="事件绑定"
            android:onClick="@{()->presenter.OnSave()}"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

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

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

        <TextView
            android:text="可观察对象"
            android:onClick="@{()->presenter.OnSave2(userinfo)}"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>


    </LinearLayout>
</layout>

package com.bw.day0128mvvm;

import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;

import android.os.Bundle;

import com.bw.day0128mvvm.databinding.ActivityMain2Binding;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MainActivity2 extends AppCompatActivity {
    private ActivityMain2Binding activityMain2Binding;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main2);
        activityMain2Binding = DataBindingUtil.setContentView(this,R.layout.activity_main2);
        User user = new User("胡豪哲",20);
        activityMain2Binding.setUser(user);

        List<String> list = new ArrayList<>();
        list.add("laohu");
        list.add("oldhu");
        list.add("hhz");
        activityMain2Binding.setList(list);
        activityMain2Binding.setIndex(1);

        Map<String,Object> map = new HashMap<>();
        map.put("111","小猫");
        map.put("222",20);
        map.put("333","小猴");
        activityMain2Binding.setMap(map);
        activityMain2Binding.setKey("222");

        Presenter presenter = new Presenter("abcd");
        activityMain2Binding.setPresenter(presenter);

        UserInfo userInfo = new UserInfo("oldhu",18);
        activityMain2Binding.setUserinfo(userInfo);
    }
}

猜你喜欢

转载自blog.csdn.net/hu1647107413/article/details/134885017