如何获取Seekbar的值进行计算?

时间:2015-11-16 11:10:36

标签: java android

在generateData()方法之上,我声明了一个整数变量bw,我希望它等于当前搜索栏进度的值,怎么做?或者实际上我可以直接使用进度值进行计算吗? 对不起,这可能听起来是一个愚蠢的问题,但我是编程的绝对新手。

如果我把bw =进展;在onprogresschanged中,无论我如何滑动搜索条,bw * 10和bw * 9的结果都将变为0。

public class MainActivity extends AppCompatActivity {
int bw;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MyAdapter adapter = new MyAdapter(this, generateData());
        ListView listView = (ListView) findViewById(R.id.listview);
        listView.setAdapter(adapter);

        SeekBar seekBar = (SeekBar) findViewById(R.id.seekBar);
        final TextView seekBarValue = (TextView) findViewById(R.id.valuetextview);
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                bw=progress;
                seekBarValue.setText(String.valueOf(progress));

            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
            }

        });

    }



    //Detail of drugs in following formatL "Drug Name", doseperkg,"frequency"
    private ArrayList<DrugItem> generateData() {
        ArrayList<DrugItem> items = new ArrayList<DrugItem>();
        items.add(new DrugItem("Ceclor", bw * 10, "mg every   8 hours"));
        items.add(new DrugItem("Cedax", bw * 9, "mg every 24 hours"));
        items.add(new DrugItem("Zinnat", bw * 10, "mg every 12 hours"));
        items.add(new DrugItem("Zithromax", bw * 10, "mg every 24 hours"));


        return items;
    }
}

2 个答案:

答案 0 :(得分:1)

是显而易见的。

在以下方法 int 进度 中,这是您的主要观点值。你可以用它来计算。

但请务必使用 onProgressChanged 方法解决。

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// your calculation...


            }

答案 1 :(得分:0)

在seekbar的回调方法中

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                bw=progress;
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
            }

        });

除此之外,您可能希望将最大值设置为seekbar的搜索

seekBar.setMax(max_value-min_value);