2013-06-06 4 views
1

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

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

Вот quesiton

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

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

Возможно ли это? и как это можно записать?

+0

«Я пытаюсь предотвратить множественные представления базы данных (или, по крайней мере, ограничить их). ». поэтому вы можете вставить первый рейтинг и когда пользователь изменит свой рейтинг, обновите предыдущую запись, не вставляя новую. – Bishan

ответ

3

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

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

How to remove a runnable from a handler object added by 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); 
    } 
} 
+0

Я точно вижу, что вы делаете. Делает совершенный смысл. Благодаря! – KickingLettuce

Смежные вопросы