我被困在试图为搜索栏使用两种方式的数据绑定。我想做的是在其上方的文本视图中显示搜索栏的进度。我一直在寻找解决方案,但似乎都没有用。
这是viewModel
(该类从BaseObservable
扩展
private int playbackSpeed;
private int playbackSpeedDisplay;
@Bindable
public int getPlaybackSpeed() {
return playbackSpeed;
}
public void setPlaybackSpeed(int speed) {
this.playbackSpeed = speed;
notifyPropertyChanged(BR.playbackSpeed);
setPlaybackSpeedDisplay(speed);
Log.d("PlaybackSpeedViewModel", "Playback Speed set at " + speed);
}
@Bindable
public String getPlaybackSpeedDisplay() {
return Integer.toString(playbackSpeedDisplay);
}
public void setPlaybackSpeedDisplay(int speed) {
this.playbackSpeedDisplay = speed;
notifyPropertyChanged(BR.playbackSpeedDisplay);
}
布局
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="viewModel"
type="com.android.PlaybackSpeedViewModel"/>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/playback_speed_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{viewModel.playbackSpeedDisplay}"
tools:text="Playback Speed:" />
<SeekBar
android:id="@+id/playback_speed_seek_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:progress="@={viewModel.playbackSpeed}"/>
</LinearLayout>
</layout>
这可能非常简单,但我似乎无法正确理解。 谢谢!
答案 0 :(得分:1)
确保已正确绑定了viewModel 。我已经在活动中验证了它的正常运行。
<
答案 1 :(得分:0)
下面的代码对我来说很好,可以使用数据绑定从seekBar获取进度值。
fun onSeekBarChanged(seekBar:SeekBar,progress:Int,fromUser:Boolean){
Logger.d("progress : $progress")
}
<androidx.appcompat.widget.AppCompatSeekBar
android:id="@+id/seekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="4"
android:onProgressChanged="@{viewModel.onSeekBarChanged}"
android:padding="@dimen/_8sdp"
android:progress="1"
android:progressTint="@color/colorAccent"
android:thumbTint="@color/colorAccent"
android:tickMarkTint="@color/colorAccent"
app:layout_constraintTop_toBottomOf="@+id/textViewIntervalBetweenAttempts"
tools:ignore="UnusedAttribute" />