java - 一个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
}
});
}
解决方案
按照下面的步骤很简单
只需在您的类/片段中实现 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 并根据它执行操作
推荐阅读
- php - 为什么我的系统中的默认 PHP 时区是“欧洲/莫斯科”?
- php - Concatenate string WITHIN a PHP HEREDOC block
- java - `handleMessage` 在 Spring Boot Web Sockets 中的 `afterConnectionClosed` 之后调用
- json - Hive table with nested JSON as string value
- ios - 更新@State后未调用SwiftUI UIViewControllerRepresentable.updateUIViewController
- c - What is difference between using function name and nickname(made from typedef) when declare another function?
- wpf - Groupbox适合可用空间WPF c#
- c# - 将此数据库中的文件转换为文本
- c# - Issue in editing field in ASP.NET CORE 2.2
- google-analytics - 将过去的交易数据添加到 GA