Многократный слушатель SeekBars - PullRequest
5 голосов
/ 04 января 2012

У меня несколько поисков на одном экране:

barheures = (SeekBar)findViewById(R.id.barheures); // make seekbar object
        barheures.setOnSeekBarChangeListener(this); // set seekbar listener.
        // since we are using this class as the listener the class is "this"
        barminutes = (SeekBar)findViewById(R.id.barminutes);
        barminutes.setOnSeekBarChangeListener(this); 

А вот и список:

@Override
public void onProgressChanged(SeekBar bar, int progress, boolean fromUser) {
    // TODO Auto-generated method stub
    Log.v("", "" + bar);
    textMinutes.setText("" + progress + "Minute(s)" );
    textHours.setText("" + progress + "Heure(s)" );
}

Я хочу сделать что-то другое, если первый ИЛИ второй столбец перешел в тот же список (это хорошая практика?), Но как это сделать? Здесь у меня есть приложение, которое не делает то, что я хочу ^^

Большое спасибо

Ответы [ 2 ]

19 голосов
/ 04 января 2012

Теперь у вас есть 2 Rit поисковых баров со следующими идентификаторами:

1) barheures - его идентификатор: R.id.barheures 2) barminutes - его идентификатор: R.id.barminutes

Теперь в методе onProgressChanged (панель SeekBar, int progress, логическое значение fromUser) выполните следующие действия:

@Override
public void onProgressChanged(SeekBar bar, int progress, boolean fromUser) {
    // TODO Auto-generated method stub
    Log.v("", "" + bar);

    switch (bar.getId()) {

    case R.id.barheures:
        textHours.setText("" + progress + "Heure(s)");
        break;

    case R.id.barminutes:
        textMinutes.setText("" + progress + "Minute(s)");
        break;
    }
}
5 голосов
/ 20 ноября 2012

Вместо сравнения идентификаторов ресурсов вы также можете просто проверить объект SeekBar на равенство. Пример:

private SeekBar bar1;
private SeekBar bar2;

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    ...

    bar1 = (SeekBar) findViewById(R.id.bar1);
    bar2 = (SeekBar) findViewById(R.id.bar2);

    ...
}

@Override
public void onProgressChanged(SeekBar bar, int progress, boolean fromUser)
{
    if (bar.equals(bar1))
    {
        // do something
    }
    else if (bar.equals(bar2))
    {
        // do something else
    }
}

Я предпочитаю делать это таким образом, потому что тогда вы будете ссылаться на id каждого ресурса SeekBar только один раз (в вашем onCreate).

...