双向数据绑定可以帮助我们设置SeekBar的进度并获取其更改。在Android中,我们可以使用Data Binding库来实现这个功能。
android {
...
dataBinding {
enabled = true
}
}
注意,这里使用了双向数据绑定的表达式@={}
。viewModel.progress
应该是SeekBar进度的getter和setter方法所对应的ViewModel中的变量。
public class MyViewModel extends ViewModel {
private MutableLiveData progress = new MutableLiveData<>();
public MutableLiveData getProgress() {
return progress;
}
public void setProgress(Integer value) {
progress.setValue(value);
}
}
这个ViewModel中的LiveData
变量progress
将被SeekBar的进度属性所绑定。我们可以使用setProgress()
方法来设置SeekBar的进度,并使用getProgress().getValue()
方法获取SeekBar的进度。
public class MyActivity extends AppCompatActivity {
private MyViewModel viewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
viewModel = ViewModelProviders.of(this).get(MyViewModel.class);
binding.setViewModel(viewModel);
}
}
在这个Activity中,我们使用DataBindingUtil
来将activity_main.xml
布局文件与相应的ActivityMainBinding
类绑定。然后,我们使用ViewModelProviders
来获取ViewModel实例,并将其设置给绑定的布局中的变量viewModel
。
这样,我们就实现了SeekBar双向数据绑定的功能。现在,当SeekBar的进度更改时,ViewModel中的progress
变量也会更新,而当我们使用setProgress()
方法设置进度时,SeekBar的进度也会更新。