Seekbars и EditTexts - PullRequest
       5

Seekbars и EditTexts

1 голос
/ 23 сентября 2010

Я работаю над приложением, в котором мне нужно, чтобы пользователь установил массив из 30 значений и сделал его удобным и простым в использовании. Я решил использовать серию виджетов SeekBars и EditText.Я использую eclipse и использую его для настройки макета.

Я ищу эффективный способ настроить приложение для автоматического обновления значения SeekBar, когда значение EditText было изменено изатем используйте это же значение в целочисленном массиве приложения.

</p>

<p><code><SeekBar android:layout_height="wrap_content"
         android:layout_width="wrap_content"
         android:max="255"
         android:layout_gravity="center_vertical"
         android:layout_weight="1"
         android:padding="10dp"
         android:id="@+id/seekX"></SeekBar>
<EditText android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_weight=".01"
          android:minWidth="50sp"
          android:maxWidth="50sp"
          android:gravity="center_horizontal"
          android:padding="10dp"
          android:layout_marginRight="10dp"
          android:inputType="number"
          android:id="@+id/editX"></EditText>
Поля поиска и поля EditText именуются соответствующим образом, так как editX должен совпадать с seekX, так как editY должен совпадать с seekY и так далее.Я также храню значения в int [] upgradeValues.

Я также установил для SeekBar максимум 255, но мне нужен способ автоматического изменения любого значения, установленного в поле EditText выше 255 до 255 и аналогично любому значению ниже 0 до 0.

В основном мне нужен эффективный способ сделать "(ValueOF) seekX = (ValueOf) editX = (ValueOf) upgradeValues ​​[x]> = 0 <= 255" и обновляться при изменении seekX или editX. </p>

1 Ответ

1 голос
/ 01 апреля 2011

Я все еще довольно новичок в разработке для Android, поэтому этот ответ не очень конкретен, но, надеюсь, он поможет вам.

Есть несколько подходов. Вы можете установить прослушиватели change как на панели поиска, так и на тексте редактирования, которые обновляют значения другого (предположим, что у вас есть 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.

...