如何使android Gridview项目可点击

时间:2015-03-12 04:46:55

标签: android gridview

我有一个片段,其中填充了gridview,当我点击gridview项目控件将通过意图转移到另一个活动时问题是当我一次多次单击gridview时它打开了许多活动那么我怎样才能使gridview项目只能点击一次

myGridview.setOnItemClickListener(new OnItemClickListener() {

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

          //  Intent i=new Intent(CurrentActivity.this,NewActivity.class);
                         new MyAsync(getActivity(),position+1).execute();
        }
    });

取代那个Intent我正在使用Asynctask那里有一些网络操作然后在它的postexecute方法中我放置了意图

3 个答案:

答案 0 :(得分:2)

在点击方法内部,无需将onItemClickListener设置为null,只需使用GridView.setClickable方法即可使GridView可点击或无法点击:

在Activity中声明ProgressDialog:

private ProgressDialog pDialog;

在开始下一个活动之前显示进度条:

@Override
 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
     myGridView.setClickable(false);     
     pDialog = new ProgressDialog(this);
     pDialog.setCancelable(false);
     pDialog.setCanceledOnTouchOutside(false);
     pDialog.setMessage("Loading...");
     pDialog.show();   
     new MyAsync(getActivity(),position+1).execute(); 
  }

并在onPostExecute内设置GridView再次点击并解除ProgressDialog:

@Override
        protected void onPostExecute(Integer result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            // start next activity here
            myGridView.setClickable(true); 
           if (pDialog != null)
            if (pDialog.isShowing())
                pDialog.dismiss();
       }

答案 1 :(得分:0)

您可以使用flag来控制可点击的

  boolean flag = false;

    myGridview.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                  if(flag == false){
                Intent i=new Intent(CurrentActivity.this,NewActivity.class);
                flag = true;
                }
            }
        });

答案 2 :(得分:0)

您可以通过每次点击Gridview项目获得点击时间和更新时间来完成此操作,这将使gridview项目只点击一次。

  private long mLastClickTime = 0;

  myGridview.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        if (SystemClock.elapsedRealtime() - mLastClickTime < 1000) {
                    return;
            }
            mLastClickTime = SystemClock.elapsedRealtime();
            Intent i=new Intent(CurrentActivity.this,NewActivity.class);
        }
    });

我希望它有所帮助!