• SeekBar爬坑


    SeekBar代码:

    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                Log.d(TAG, "onProgressChanged: -----更改的名称="+layerOperatingSwitchBean.title+"进度="+progress);
                layerOperatingSwitchBean.percentage=progress;
             
        }
    
        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            currentSeekBarName=layerOperatingSwitchBean.title;
        }
    
        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
        }
    });

    场景:我在RecyclerView里面使用SeekBar来改变数据的值

    问题:滑动A SeekBar的时候,会改变B SeekBar的值,这里根本就没有触摸B SeekBar,但是B SeekBar的值被改变了

     

    SeekBar代码:

    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
          //seekBar滑动值改变
        }
    
        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
         //开始改变seekBar
        }
    
        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
        //结束改变seekBar
        }
    });

    解决办法:

    这里我们在开始改变SeekBar的值onStartTrackingTouch方法里拿到触摸的是哪一个SeekBar,然后在改变SeekBar的onProgressChanged方法里去校验是不是当前滑动的SeekBar,是的话处理,否则跳过,代码如下

    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            if(TextUtils.equals(currentSeekBarName,layerOperatingSwitchBean.title)){
                Log.d(TAG, "onProgressChanged: -----更改的名称="+layerOperatingSwitchBean.title+"进度="+progress);
                layerOperatingSwitchBean.percentage=progress;
             
           }
        }
    
        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            currentSeekBarName=layerOperatingSwitchBean.title;
        }
    
        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
        }
    });

    结果:问题解决

     

  • 相关阅读:
    vue nextTick源码分析
    杂谈:DC对Verilog和SystemVerilog语言的支持
    细分图中的可到达节点 : 常规最短路运用题
    数组,数组方法及排序算法(冒泡排序,选择排序,快速排序)
    JS 对象为空判断
    一文读懂 HTTP/2 特性
    EasyNVR平台级联到EasyCVR,视频播放一会就无法播放是什么原因?
    14:00面试,14:06就出来了,问的问题过于变态了。。。
    三、部署kafka
    并查集介绍 & 代码实现 & 优化思路详解
  • 原文地址:https://blog.csdn.net/u013023845/article/details/126711621