如何在范围搜索栏中更改最小值和最大值时调用不同的方法

时间:2017-03-29 05:52:03

标签: javascript android android-seekbar changelistener rangeseekbar

我的应用中有一个范围搜索栏。我需要通过仅在值更改时传递条的最小值来调用方法,并且如果更改最大值,则通过传递最大值来调用另一个方法。 到目前为止,这是我的代码。

rangeSeekbar.setOnRangeSeekBarChangeListener(new RangeSeekBar.OnRangeSeekBarChangeListener<Integer>() {
        @Override
        public void onRangeSeekBarValuesChanged(RangeSeekBar<?> bar, Integer minValue, Integer maxValue) {
                //call this if min value is changed
                mywebView.loadUrl("javascript:setStart(" + minValue.intValue() + ")");

                //call this if max value is changed
                mywebView.loadUrl("javascript:setEnd(" + maxValue.intValue() + ")");
            }

            Toast.makeText(getApplicationContext(), minValue + "-" + maxValue, Toast.LENGTH_LONG).show();
        }
    });

问题是当只有一个值发生变化时,会调用这两个方法。如何区分方法调用? 欢迎任何想法。

1 个答案:

答案 0 :(得分:0)

您可以声明一个字段变量来保存您已更改的值:

int min ,max;
rangeSeekbar.setOnRangeSeekBarChangeListener(new RangeSeekBar.OnRangeSeekBarChangeListener<Integer>() {
        @Override
        public void onRangeSeekBarValuesChanged(RangeSeekBar<?> bar, Integer minValue, Integer maxValue) {
                if(minValue.intValue!=min){
                    //call this if min value is changed
                    mywebView.loadUrl("javascript:setStart(" + minValue.intValue() + ")");
                    min = minValue.intValue;
                }

                if(maxValue.intValue!=max){
                    //call this if max value is changed
                    mywebView.loadUrl("javascript:setStart(" + maxValue.intValue() + ")");
                    max = maxValue.intValue;
                }    

        }

});
  • 如果您可以确认,则可以为minmax分配默认值。