美文网首页
Android 按钮重复点击问题

Android 按钮重复点击问题

作者: 妤亓子 | 来源:发表于2019-04-13 15:17 被阅读0次

。。今天在做一个dialog 的列表显示的时候,列表下方有一个搜索框。由于项目采用MVP模式,数据都是通过P层将结果给视图的。这个dialog的判断条件烦了一下午。脑袋晕晕的。终于在3点准时完成了。

1,首次进入dialog

分页加载第一页数据。这里采用了BaseQuickAdapter的自动刷新方式。此时搜索框为空,不需要搜索

2,上拉加载下一页数据。

调用接口,页数为2,保存了第一页数据。后台只给第二页的数据。这样防止数据过多的时候,加载缓慢问题,虽然加了loading。但是提高速度也是必然的。

页数一次+1.

3,以上显示个列表加载下一页都是小问题。

打开dialog后 在输入框进行搜索。此时再次调接口 串入keyword 关键字。页数为1 清空 之前的数据并更新Adapter。

输入数据里没有的内容,并点击搜索。列表显示空白提示页。(注:加载更多的样式也是自定义的。)

1

这个不多说网上多的是。

4,再一次输入关键字搜索。此时,手欠连续快速点击了好几下。bug出现

加载的数据重复加载,且加载显示一直在加载中 ,继续狂点。哈哈列表空白了,连空白提示都没。

好,找一防止按钮重复点击的方法被:

网上此类的方法多不胜数:但是并不是每个都适用。

我用了以下这个工具类,亲测好用:

public class ButtonUtils {

private static long lastClickTime =0;

    private static long DIFF =1000;

    private static int lastButtonId = -1;

    /**

    * 判断两次点击的间隔,如果小于1000,则认为是多次无效点击

    *

    * @return

    */

    public static boolean isFastDoubleClick() {

return isFastDoubleClick(-1, DIFF);

    }

/**

    * 判断两次点击的间隔,如果小于1000,则认为是多次无效点击

    *

    * @return

    */

    public static boolean isFastDoubleClick(int buttonId) {

return isFastDoubleClick(buttonId, DIFF);

    }

/**

    * 判断两次点击的间隔,如果小于diff,则认为是多次无效点击

    *

    * @param diff

    * @return

    */

    public static boolean isFastDoubleClick(int buttonId, long diff) {

long time = System.currentTimeMillis();

        long timeD = time -lastClickTime;

        if (lastButtonId == buttonId &&lastClickTime >0 && timeD < diff) {

Log.v("isFastDoubleClick", "短时间内按钮多次触发");

return true;

        }

lastClickTime = time;

        lastButtonId = buttonId;

return false;

    }


将以上代码复制到自己项目里即可。使用方法:

1

注:记录每天学习的小点滴。

相关文章

网友评论

      本文标题:Android 按钮重复点击问题

      本文链接:https://www.haomeiwen.com/subject/nhalwqtx.html