2012-03-09 24 views
0

在我的GridView中出現錯誤,正在顯示來自字符串的網格視圖。當我選擇網格視圖的任何一行時,我想顯示一個警告對話框。但我的問題是當我滾動網格視圖它顯示警報對話框。這是我的代碼。GridView中的setOnItemSelectedListener錯誤?

grid = (GridView) findViewById(R.id.grid); 
    grid.setAdapter(/*Adapter class*/); 

    grid.setOnItemSelectedListener(new OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> parent, View v, int pos, long id) { 
      final AlertDialog alertDialog = new AlertDialog.Builder(ApprovePunches.this).create(); 
      alertDialog.setTitle("Approve..."); 
      alertDialog.setMessage("Are you sure?"); 
      alertDialog.setButton("ok", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
       alertDialog.dismiss(); 
       } 
      }); 
      alertDialog.setButton2("Cancel", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
        alertDialog.dismiss(); 
        } 
       }); 

      alertDialog.setIcon(android.R.drawable.alert_dark_frame); 
      alertDialog.show(); 

     } 



     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 


     } 
    }); 

誰能幫我做這個。謝謝。

+0

logcat的,請.. – Deva 2012-03-09 12:03:50

+0

@Deva:我不知道如何表達,在沒有強行關閉或給logcat錯誤信息的意義上的錯誤,當我點擊項目,這是沒有什麼,但是當試圖滾動它顯示警報.... – wolverine 2012-03-09 12:07:21

+0

我覺得跟隨Binyamins下面的指令應該沒問題。 – Deva 2012-03-09 12:11:35

回答

0

這是因爲您正嘗試在onItemSelected偵聽器中顯示警報對話框。當你的視圖發生變化時,你的onItemSelectedListener被調用(例如,在滾動事件期間)。

如果您要根據用戶動作來顯示一個對話框,您可以使用setOnItemClickListener這樣,

grid.setOnItemClickListener(新OnItemClickListener(){

@Override 
    public void onItemClick(AdapterView<?> parent, View v, int pos, long id) { 
     final AlertDialog alertDialog = new AlertDialog.Builder(ApprovePunches.this).create(); 
     alertDialog.setTitle("Approve..."); 
     alertDialog.setMessage("Are you sure?"); 
     alertDialog.setButton("ok", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
      alertDialog.dismiss(); 
      } 
     }); 
     alertDialog.setButton2("Cancel", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
       alertDialog.dismiss(); 
       } 
      }); 

     alertDialog.setIcon(android.R.drawable.alert_dark_frame); 
     alertDialog.show(); 

    } 

}); 
+0

謝謝..它的工作正常。 – wolverine 2012-03-09 12:31:11

+0

歡迎我的朋友... – 2012-03-09 12:32:03

1

對GridView使用setOnItemClickListener,而不是setOnItemSelectedListener