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) {
}
});
结果:问题解决