首页 > 解决方案 > 一个java类中有多个seekbar,需要为每个seekbar实现每个setOnSeekBarChangeListener吗?

问题描述

我需要在同一个 Java 类中创建多个搜索栏。但是,我想知道我们是否需要为每个搜索栏设置每个 setOnSeekBarChangeListener?如果我这样做,代码似乎太长(我需要在同一个类中创建 10 个搜索栏)。还有其他可以缩短代码的解决方案吗?非常感谢你的帮助。:)

下面是我的代码


    private SeekBar seekbar,seekbar1;
    private TextView a,b;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.schiassess);
        seekbar = (SeekBar) findViewById(R.id.delubar);
        seekbar1 = (SeekBar) findViewById(R.id.disorbar);
        a =  findViewById(R.id.a);
        b =  findViewById(R.id.b);


        seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                int val = (progress * (seekBar.getWidth() - 2 * seekBar.getThumbOffset())) / seekBar.getMax();
                progress++;
                a.setText("" + progress);
                a.setX(seekBar.getX() + val + seekBar.getThumbOffset() / 2);
            }
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
            }
            public void onStartTrackingTouch(SeekBar seekBar) {
                // TODO Auto-generated method stub
            }
        });

        seekbar1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                int val = (progress * (seekBar.getWidth() - 2 * seekBar.getThumbOffset())) / seekBar.getMax();
                progress++;
                b.setText("" + progress);
                b.setX(seekBar.getX() + val + seekBar.getThumbOffset() / 2);
            }
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
            }
            public void onStartTrackingTouch(SeekBar seekBar) {
                // TODO Auto-generated method stub
            }
        });

    }

标签: javaandroidandroid-seekbar

解决方案


按照下面的步骤很简单

只需在您的类/片段中实现 SeekBar.OnSeekBarChangeListener

public class Home extends AppCompatActivity implements SeekBar.OnSeekBarChangeListener {
}

您不必为每个 Seekbar 编写新的 OnSeekBarChangeListener ...

只需实施

@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {

}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {

}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {

} to your Activity/Fragment.. 

现在您可以检查 id 并根据它执行操作


推荐阅读