设置之前的RatingBar延迟提交

时间:2013-06-06 18:42:39

标签: android ratingbar

我有RatingBar用户可以提交星号。我没有它的按钮,我想让它更友好,让它动态提交。

setOnRatingBarChangeListener方法中,我提交星标。

这是问题

我想在提交之前延迟1秒,如果用户更改为其他星号,请重置计时器。

我正在尝试阻止多个数据库提交(或至少限制它们)。

这可能吗?怎么写呢?

1 个答案:

答案 0 :(得分:3)

绝对有可能。这样做的理想方法可能是在班级中创建Handler。当监听器被调用时,取消包含提交代码的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);
    }
}