【问题标题】:While speedily clicking on item of gridview, same method has been called twice a time在快速单击gridview的项目时,一次调用了两次相同的方法
【发布时间】:2017-06-06 08:35:11
【问题描述】:

我在我的项目中使用了网格视图。当我快速单击网格视图项时,它一次调用相同的方法两次。但我慢慢点击然后它完美地工作。请帮帮我。在这种方法中,当我单击项目时调用对话框,它会打开对话框,但是当我快速单击该项目时,对话框会打开两次。我该怎么做才能解决这个问题

grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {

    @Override
   public void onItemClick(AdapterView<?> parent, final View view, final int position, long id) {

    showDialog(position);

    }
});

【问题讨论】:

    标签: android gridview onitemclicklistener showdialog


    【解决方案1】:

    您可以使用不允许多次快速点击的代码代替您的 onclicklistener。

    public abstract class SingleClickListener implements View.OnClickListener {
        private static final long THRESHOLD_MILLIS = 500L;
        private long lastClickMillis;
    
        @Override
        public void onClick(View v) {
            long now = SystemClock.elapsedRealtime();
            if (now - lastClickMillis > THRESHOLD_MILLIS) {
                onClicked(v);
                lastClickMillis = 0;
            } else {
                lastClickMillis = now;
            }
        }
    
        public abstract void onClicked(View v);
    }
    

    而不是普通的 onclicklistener 使用这个

     stage1_nxt.setOnClickListener(new SingleClickListener() {
    

    【讨论】:

    • 我在 if 条件中添加方法?
    • 但我必须使用 grid.setonitemclickListner
    • grid.setonitemclicklistener(new singleclicklistener)
    • 你必须修改它来实现onitemclicklistener
    【解决方案2】:
    i have solution for opening twice time method.i can define the below condition throgh sloved it 
    
    grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    
                private long mLastClickTime = 0;
    public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
                      if (SystemClock.elapsedRealtime() - mLastClickTime < 1000)
    {
                            return;
                        }
                        mLastClickTime = SystemClock.elapsedRealtime();
    
                        grideProductAdd(position);
    
    
    
    
                }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-29
      • 1970-01-01
      • 2021-02-28
      • 2014-03-13
      • 2021-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多