我正在开发一个应用程序,我需要用户设置一个包含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时更新。
答案 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模型中这样做。