Android DataBinding 从入门到进阶
DataBinding入门进阶指南(一)
3. BaseObservable
重学安卓:从 被误解 到 真香 的 Jetpack DataBinding!
添加如下配置后,需要点击 ,用来同步配置(使配置生效)

android {
dataBinding {
enabled = true
}
}
Android编译出现DSL element android.dataBinding.enabled is obsolete and has been replaced with android
Android studio打包app
安装出现以下问题:

解决办法:打包时,签名版本 V1 V2全部勾选

package com.example.lyrain.mysecondapplication;
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import com.example.lyrain.mysecondapplication.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity {
User user;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityMainBinding binding = DataBindingUtil.setContentView(this,R.layout.activity_main);
user = new User();
user.setName("用户名");
user.setNickName("昵称");
user.setEmail("abc@123.com");
user.setVip(true);
binding.setUser(user);
}
int size=30;
public void bigger(View v){ // 按钮对应的 onclick 响应
TextView txv;
txv= (TextView) findViewById(R.id.textView); // 根据ID找到对应的text对象
txv.setTextSize(this.size++); // 修改对象的字符大小-size
}
public void display(View v){ // 另外一个按钮对应的 onclick 响应
// EditText name= (EditText) findViewById(R.id.editTextTextPersonName); //还是根据ID找到对象,并进行接下来的操作
// TextView text2= (TextView) findViewById(R.id.textView);
// text2.setText(name.getText().toString()); // 设置字符
// User user = new User();
user.setEmail("1111.com");
user.setName("WOSHI.....");
}
}
package com.example.lyrain.mysecondapplication;
import androidx.databinding.BaseObservable;
import androidx.databinding.Bindable;
public class User extends BaseObservable{
private String name;
private String nickName;
private String email;
private boolean vip;
@Bindable
public boolean getVip() {
return vip;
}
public void setVip(boolean vip) {
this.vip = vip;
notifyPropertyChanged( BR.vip);
}
@Bindable
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
notifyPropertyChanged( BR.name);
}
@Bindable
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
notifyPropertyChanged( BR.nickName);
}
@Bindable
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
notifyPropertyChanged( BR.email);
}
}
<?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="com.example.lyrain.mysecondapplication.User" />
<variable
name="user"
type="User" />
<variable name="handlers" type="com.example.lyrain.mysecondapplication.MainActivity"/>
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_marginStart="10dp"
android:layout_marginLeft="171dp"
android:layout_marginTop="68dp"
android:layout_marginEnd="183dp"
android:layout_marginRight="183dp"
android:layout_marginBottom="100dp"
android:text="@={ user.email }"
app:layout_constraintBottom_toBottomOf="@+id/button_setFont"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/button_setFont"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button_setFont"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="61dp"
android:layout_marginLeft="61dp"
android:layout_marginTop="344dp"
android:layout_marginEnd="257dp"
android:layout_marginRight="257dp"
android:layout_marginBottom="339dp"
android:onClick="bigger"
android:text="放大"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/editTextTextPersonName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="33dp"
android:layout_marginLeft="33dp"
android:layout_marginTop="161dp"
android:layout_marginEnd="32dp"
android:layout_marginRight="32dp"
android:layout_marginBottom="132dp"
android:ems="10"
android:hint="请输入要显示的字符"
android:inputType="textPersonName"
android:text="@={ user.email }"
android:textColor="@{ user.vip ? 0xffff0000 : 0xff0000}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/button_modify"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button_setFont" />
<Button
android:id="@+id/button_modify"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="31dp"
android:layout_marginLeft="31dp"
android:layout_marginTop="550dp"
android:layout_marginEnd="43dp"
android:layout_marginRight="43dp"
android:layout_marginBottom="133dp"
android:onClick="display"
android:text="@string/ModifyBtnString"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/editTextTextPersonName"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

1万+

被折叠的 条评论
为什么被折叠?



