RatingBar задерживает отправку перед установкой

У меня есть RatingBar, где пользователь может отправить номер звезды. У меня нет кнопки с ним, я хочу сделать его более удобным для пользователя и позволить ему отправляться динамически.

В методе setOnRatingBarChangeListener я отправляю звезды.

Вот вопрос

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

Я пытаюсь предотвратить отправку нескольких баз данных (или, по крайней мере, ограничить их).

Это возможно? и как это можно написать?


person TheLettuceMaster    schedule 06.06.2013    source источник
comment
Я пытаюсь предотвратить отправку нескольких баз данных (или, по крайней мере, ограничить их).. чтобы вы могли вставить первую оценку, а когда пользователь изменит свой рейтинг, обновить предыдущую запись без вставки новой.   -  person Bishan    schedule 15.06.2013


Ответы (1)


Это определенно возможно. Идеальным способом сделать это может быть создание Handler в вашем классе. Когда слушатель вызывается, отмените Runnable, который содержит код отправки, и опубликуйте его для запуска через 1 секунду. Если это первый раз, когда вы получаете обратный звонок, отмена не будет иметь никакого эффекта, но это нормально. Убедитесь, что ваш Runnable не является анонимным, чтобы его можно было отменить только в одном экземпляре.

Ваш вопрос похож на этот:

Как удалить исполняемый объект из обработчика объект добавлен postDelayed?

Вот код:

Handler mHandler = new Handler(Looper.getMainLooper());

Runnable mSubmit = new Runnable() {
    public void run() {
        // Submit to server ...
    }
}

RatingBar.OnRatingBarChangeListener mListener = 
        new RatingBar.OnRatingBarChangeListener() {
    void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
        mHandler.removeCallbacks(mSubmit);
        mHandler.postDelayed(mSubmit, 1000);
    }
}
person satur9nine    schedule 15.06.2013
comment
Я точно вижу, что ты делаешь. Имеет смысл. Спасибо! - person TheLettuceMaster; 15.06.2013