要实现Android数据绑定,监听两个EditText的变化,可以按照以下步骤进行:
android {
...
dataBinding {
enabled = true
}
}
import android.text.Editable;
import android.text.TextWatcher;
import androidx.databinding.BaseObservable;
import androidx.databinding.Bindable;
public class MyViewModel extends BaseObservable {
private String text1;
private String text2;
@Bindable
public String getText1() {
return text1;
}
public void setText1(String text1) {
this.text1 = text1;
notifyPropertyChanged(BR.text1);
updateResult();
}
@Bindable
public String getText2() {
return text2;
}
public void setText2(String text2) {
this.text2 = text2;
notifyPropertyChanged(BR.text2);
updateResult();
}
@Bindable
public String getResult() {
return "Result: " + (text1 != null ? text1 : "") + (text2 != null ? text2 : "");
}
private void updateResult() {
notifyPropertyChanged(BR.result);
}
public TextWatcher getText1Watcher() {
return new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
setText1(s.toString());
}
@Override
public void afterTextChanged(Editable s) {
}
};
}
public TextWatcher getText2Watcher() {
return new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
setText2(s.toString());
}
@Override
public void afterTextChanged(Editable s) {
}
};
}
}
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import android.os.Bundle;
import com.example.databindingdemo.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
MyViewModel viewModel = new MyViewModel();
binding.setViewModel(viewModel);
}
}
通过上述步骤,我们可以实现对两个EditText的变化进行监听,并根据变化更新TextView的内容。