Reputation: 114
I'm trying to build Android app in Kotlin using dataBinding and when I'm trying to compile this code
@Bindable
var progress:Int=1
@NotNull
@InverseBindingAdapter(attribute = "progress")
fun SeekBar.getProgress():Int{
return this.progress
}
@BindingAdapter(value = ["progressAttrChanged"])
fun setListeners(seekBar: SeekBar,inverseBindingListener: InverseBindingListener){
var listener=object: SeekBar.OnSeekBarChangeListener{
override fun onProgressChanged(seekBar: SeekBar?, Progress: Int, fromUser: Boolean) {
progress=Progress
mBeatBox.mRange=progress/66.67 as Float
inverseBindingListener.onChange()
}
override fun onStartTrackingTouch(seekBar: SeekBar?) {
}
override fun onStopTrackingTouch(seekBar: SeekBar?) {
}
}
seekBar.setOnSeekBarChangeListener(listener)
}
I get this errors https://ibb.co/cBHRwx.
Here is view of modelView
<data>
<variable
name="viewModel"
type="com.bignerdranch.android.beatboxkotlin.Models.BeatBoxViewModel"/>
</data>
....
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:text="progres"
android:gravity="center"
android:layout_weight="9"/>
<android.support.v7.widget.AppCompatSeekBar
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="9"
app:progress="@={viewModel.progress}"/>
How can I solve this?
Upvotes: 0
Views: 120
Reputation: 114
I solved this error in this way
Updated viewModel `
var progress:Int=mBeatBox.mRange.toInt()
@Bindable set(value){field=value;notifyChange()}
@Bindable get()=field
fun getEditListener():SeekBar.OnSeekBarChangeListener{
var listener=object: SeekBar.OnSeekBarChangeListener{
override fun onProgressChanged(seekBar: SeekBar?, Progress: Int, fromUser: Boolean) {
progress=Progress
mBeatBox.mRange=(progress/66.67).toFloat()
}
override fun onStartTrackingTouch(seekBar: SeekBar?) {
}
override fun onStopTrackingTouch(seekBar: SeekBar?) {
}
}
return listener
}`
And View looks like:
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:text="progress"
android:gravity="center"
android:layout_weight="9"
android:text="@{String.valueOf(viewModel.progress)}"/>
<android.support.v7.widget.AppCompatSeekBar
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="9"
app:OnSeekBarChangeListener="@{viewModel.EditListener}"/>
Upvotes: 2
Reputation: 559
Not sure exactly what your error is pointing to, but looks like there's already a SeekbarBindingAdapter
defined in the library, so you probably don't need to define your own. If you want to update things when progress
changes, override set
or use ObservableInt
with an OnPropertyChangedCallback
Upvotes: 0