Kotlin - библиотека поиска диапазонов - PullRequest
0 голосов
/ 09 марта 2019

Я использую syedowaisali Range Seekbar, и у меня возникают проблемы с изменением моего TextView в соответствии с положением большого пальца на панели.

У меня есть следующее вonCreate:

    val rangeSeekbar = CrystalRangeSeekbar(this)
    rangeSeekbar.setOnRangeSeekbarChangeListener { minValue, maxValue ->
        tv_rent_time_range.text = maxValue.toString()
    }

tv_rent_time_range моей Деятельности загружается с maxValue, но он не меняется при перемещении большого пальца правой руки

В его документации (на Java) этопредположим, что это выглядит так:

rangeSeekbar.setOnRangeSeekbarChangeListener(new OnRangeSeekbarChangeListener() {
    @Override
    public void valueChanged(Number minValue, Number maxValue) {
        tvMin.setText(String.valueOf(minValue));
        tvMax.setText(String.valueOf(maxValue));
    }
});

У меня такое чувство, что я неправильно настраиваю setOnRangeSeekbarChangeListener в Котлине

1 Ответ

1 голос
/ 09 марта 2019

Вы создаете новый объект (val rangeSeekbar = CrystalRangeSeekbar(this)) вместо использования вида из вашего раздутого макета.Вы можете просто использовать:

rangeSeekbar.setOnRangeSeekbarChangeListener { minValue, maxValue ->
    // Do something there  
}

Для SeekBar из Android SDK вы можете получать обновления от setOnSeekBarChangeListener.

Для CrystalRangeSeekbar из Android SDK вы можете получать обновления от setOnRangeSeekbarChangeListener.

import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.widget.SeekBar
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        setupUi()
    }

    private fun setupUi() {
        // Regular SeekBar (from Android SDK)
        seek_bar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
            override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
                // Update text here
            }

            override fun onStartTrackingTouch(seekBar: SeekBar?) {
            }

            override fun onStopTrackingTouch(seekBar: SeekBar?) {
            }
        })

        crystal_range_seek_bar.setOnRangeSeekbarChangeListener { minValue, maxValue ->
            // Update text here
        }
    }
}
...