Реализация OnValueChange для NumberPicker в Android

Я пытаюсь добавить onValueChangeListener в средство выбора номеров (np1) в Android 4.2.2.

Вот что у меня есть до сих пор

public class main extends Activity  {
ViewFlipper vf = null;
HttpClient client = null;
private ArrayList<String> captionList = new ArrayList<String>();
ListView lv = null;
private String custid = null;
ImageView iv = null;
private int vfloginview = 0;
private int vflistview = 0;
private boolean vfsentinal = false;
NumberPicker np1 = null;
TextView totalcost = null;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mystuffmobile);
    vf = (ViewFlipper) findViewById(R.id.vf);
    client = new DefaultHttpClient();
    lv = (ListView) findViewById(R.id.lv);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    np1 = (NumberPicker) findViewById(R.id.np1);
    np1.setMinValue(1);
    np1.setMaxValue(400);
    //np1.setOnValueChangedListener;    
    //np1.setOnValueChangedListener(onValueChange);

}

чтобы попытаться проверить его функциональность, я использовал это

public void onValueChange (NumberPicker np1, int oldVal, int newVal) {
    Log.v("NumberPicker", np1.getValue() +"");
}

Кто-нибудь знает простой способ реализовать этот прослушиватель без реализации моей основной деятельности NumberPicker.OnValueChangeListener?

Примечание: единственная причина, по которой я против того, чтобы моя основная активность реализовывала NumberPicker.OnValueChangeListener, заключается в том, что тогда мне нужно установить для main значение abstract, и мое приложение не запустится.


person TheMcMurder    schedule 13.04.2013    source источник


Ответы (1)


Вы будете делать это так же, как прослушиватель кликов по кнопке.

np1.setOnValueChangedListener(new OnValueChangeListener() {
    @Override
    public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
        // do something here
    }
});

Полностью рабочий пример можно найти здесь: http://samplecodez.com/android/numberpicker.php.

Некоторые стилистические моменты...

  • Main следует писать с заглавной буквы, и рекомендуется сделать его более описательным, как MainActivity.
  • Используйте поля только при необходимости. Я предполагаю, что вы не используете большинство этих переменных вне onCreate(), поэтому вместо этого сделайте их локальными переменными.
  • TextView totalCost — ваша лучшая именованная переменная из всех :) Рассмотрите возможность использования подробных имен. Через 6 месяцев вы поблагодарите себя, когда впервые за долгое время оглянетесь на этот код.
  • Никаких магических значений (или строк)! Создайте константу для ваших минимальных и максимальных значений, и они должны быть закрытыми статическими конечными целыми числами с вашими полями.
  • В Eclipse настройте действия сохранения Java в настройках для автоматического форматирования всех строк кода при сохранении.

Конечно, ни одна из этих вещей не улучшит работу вашего кода, но его будет легче читать.

person Bill Mote    schedule 13.04.2013
comment
Билл Моут, ты гений. Спасибо за ваше время!!! Вы только что остановили час устранения неполадок!! - person TheMcMurder; 13.04.2013
comment
Мы все были там. Поверьте мне ;) Когда я оглядываюсь назад на некоторые из своих первых вопросов, я очень боюсь, что они все еще доступны для всеобщего ознакомления! - person Bill Mote; 13.04.2013
comment
Хахахахаха еще раз спасибо. Я также ценю советы по стилю. Прошло много времени с тех пор, как я посещал курсы кодирования, и я забыл много таких вещей. Я реализовал несколько указателей. - person TheMcMurder; 13.04.2013