Seekbars和EditTexts

时间:2010-09-23 19:34:46

标签: android android-edittext seekbar

我正在开发一个应用程序,我需要用户设置一个包含30个值的数组,并使用户友好且易于使用我决定使用一系列SeekBars和EditText小部件。我正在使用eclipse并使用它来设置布局。

我正在寻找一种有效的方法来设置应用程序,以便在更改EditText的值时自动更新SeekBar的值,然后在应用程序整数数组中使用相同的值。

{{ 2}} 搜索栏和EditText字段以相应的方式命名,editX应匹配seekX,因为editY应匹配seekY,依此类推。我也将值存储在int [] upgradeValues中。

我还设置SeekBar的最大值为255但是我需要一种方法来自动将EditText字段中设置的任何值设置为255以下,同样地将任何值设置为0到0.

基本上我需要一种有效的方法来制作“(ValueOF)seekX =(ValueOf)editX =(ValueOf)upgradeValues [x]> = 0< = 255”并在更新seekX或editX时更新。

1 个答案:

答案 0 :(得分:1)

我仍然是Android开发的新手,所以这个答案并不是非常具体,但希望它能让你顺利上路。

有几种方法。您可以在搜索栏和更新其他值的edittext上设置更改侦听器(假设您有EditText t,SeekBar b和模型中的值:

b.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
    {
        @Override
        public void onProgressChanged(final SeekBar seekBar,
            final int progress,
            final boolean fromUser)
        {
            if (fromUser)
            {
                model = progress;
                updateUI();
            }
        }

        @Override
        public void onStartTrackingTouch(final SeekBar seekBar)
        {

        }

        @Override
        public void onStopTrackingTouch(final SeekBar seekBar)
        {

        }
    });
    t.setOnKeyListener(new View.OnKeyListener()
    {
        @Override
        public boolean onKey(final View v,
            final int keyCode,
            final KeyEvent event)
        {
            model = Integer.parseInt(t.getText().toString());
            updateUI();
            return true;
        }
    });

然后updateUI()将类似于:

private void updateUI()
{
    t.setText(model);
    b.setProgress(model);
}

这些是一些疯狂的名字,我显然没有错误检查。但是你明白了。这可能不是您想要的方式,因为您必须确保捕获用户与每个组件交互的所有不同方式(onKey可能不足以检测EditText值何时更改)。

正确的(MVC)方法是让你的模型(你的int [])包含值,让你的SeekBar和EditText使用你的模型作为模型。我不知道如何在Android的UI模型中这样做。