Как устранить ошибки с настройкой задачи ': app: kaptDebugKotlin'? - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь собрать приложение для Android в Kotlin, используя dataBinding, и когда я пытаюсь скомпилировать этот код

@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)
}

Я получаю эти ошибки https://ibb.co/cBHRwx.

Вот вид моделиView

 <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}"/>

Как я могу решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Я решил эту ошибку следующим образом

Обновлено 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
}`

А вид выглядит так:

 <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}"/>
0 голосов
/ 29 апреля 2018

Не знаю точно, на что указывает ваша ошибка, но похоже, что в библиотеке уже определен SeekbarBindingAdapter, поэтому вам, вероятно, не нужно определять свою собственную. Если вы хотите что-то обновить при изменении progress, переопределите set или используйте ObservableInt с OnPropertyChangedCallback

...