2015-09-24 182 views
0

我有一個按鈕,當我單擊該按鈕時,我的第一個自定義網格視圖彈出爲對話框。當我點擊一個項目時,我的第二個自定義網格視圖彈出,解散我的第一個自定義網格視圖。現在問題在這裏,當我點擊我的第二​​個自定義網格視圖中的項目時,什麼也沒有發生。我的setOnItemClickListener()沒有在那裏工作,我無法追查我的問題,我做錯了。網格視圖setOnItemClickListener()不適用於自定義網格視圖

顯示我的第一個網格視圖`

public void outletList() { 
    dialogOutlet = new Dialog(SelectCategory.this); 

    dialogOutlet.setContentView(R.layout.outlet_dialogue_grid); 
    dialogOutlet.setTitle("Select Outlet"); 

    final GridView lv = (GridView) dialogOutlet.findViewById(R.id.gridOutletView); 

    oa = new OutletAdapter(this, ParseData.OutletList); 

    lv.setAdapter(oa); 
    outletFlag = 1; 

    lv.setOnItemClickListener(this); 
    dialogOutlet.show(); 


    dialogOutlet.setOnDismissListener(new OnDismissListener() { 

     @Override 
     public void onDismiss(DialogInterface dialog) { 
      // TODO Auto-generated method stub 
      outletFlag = 0; 
     } 
    }); 

    }` 

顯示第二網格視圖`

public void billList() { 
    dialogueBill = new Dialog(SelectCategory.this); 

    dialogueBill.setContentView(R.layout.bill_dialogue_grid); 
    dialogueBill.setTitle("Select Bill"); 

    final GridView bv = (GridView) dialogueBill.findViewById(R.id.gridBillView); 

    ba = new BillAdapter(this, ParseData.BillList); 

    bv.findFocus(); 

    bv.setAdapter(ba); 
    bv.setFocusableInTouchMode(true); 
    bv.requestFocus(); 
    bv.setClickable(true); 
    bv.setFocusable(true); 
    System.out.println("focusable "+bv.isFocusableInTouchMode()); 
    System.out.println("focusable "+bv.findFocus()); 

    System.out.println("Outlet Flag Bill List>>>>>>"+outletFlag); 

    bv.setOnItemClickListener(this); 

    dialogueBill.show(); 

    dialogueBill.setOnDismissListener(new OnDismissListener() { 

     @Override 
     public void onDismiss(DialogInterface dialog) { 
      // TODO Auto-generated method stub 
      outletFlag = 0; 
     } 
    }); 

}` 

在產品按

public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) { 

    System.out.println("Outlet Flag inside Item Click>>>>>>"+outletFlag); 

    if(outletFlag!=1){ 

     HashMap<String, String> out = BillAdapter.billData.get(pos); 
     String sel_bill = out.get(ParseData.KEY_BILL_NO); 

     System.out.println("Selected Bill>>>>>>"+sel_bill); 

     selected_bill = sel_bill; 


     Intent iii = new Intent(SelectCategory.this, FBHome.class); 
     startActivity(iii); 


    } 
    else{ 

     HashMap<String, String> out = OutletAdapter.outletData.get(pos); 
     String sel_name = out.get(ParseData.KEY_NAME); 
     String sel_code = out.get(ParseData.KEY_CODE); 
     out_pos = pos; 
     selected_outlet = sel_code; 
     selected_outlet_name = sel_name; 
     dialogOutlet.dismiss(); 
     outletFlag = 0; 
     new GetBillDetails().execute(); 


    } 

} 

感謝提前:)

+0

嘗試寫seprate onClickListeners –

+0

試過老闆:( –

+0

ne enthina aliya enne老闆ennokke vilikunne –

回答

3

在您的GridView佈局中,如果您使用Clickable Widget(如Button或ImageButton)更改並嘗試。

這是Android不承認點擊Gridadpater意見內的事件,因此,如果你改變一切應罰款

你可以嘗試

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:background="@android:color/darker_gray" 
    android:layout_width="90dp" 
    android:layout_height="90dp" 
    android:gravity="center" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/bt_grid" 
     android:layout_width="wrap_content" 
     android:textColor="@android:color/white" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 
+0

你救了我的命:D –

0

嘗試使用警報撥號og

private void showGridDialog() { 
      // Prepare grid view 
    final GridView bv = (GridView) 
    dialogueBill.findViewById(R.id.gridBillView); 

     ba = new BillAdapter(this, ParseData.BillList); 

     bv.findFocus(); 

     bv.setAdapter(ba); 
     bv.setFocusableInTouchMode(true); 
     bv.requestFocus(); 
     bv.setClickable(true); 
     bv.setFocusable(true); 
      bv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
        // do something here 
       } 
      }); 

      // Set grid view to alertDialog 
      AlertDialog.Builder builder = new AlertDialog.Builder(this); 
      builder.setView(bv); 
      builder.setTitle("Goto"); 
      builder.show(); 
     } 
+0

仍然不工作的老闆:(。我已經試過了。 –

+0

嘿,來吧那是什麼倒投。老闆我也試過上面的代碼它也不工作:( –

+0

我不知道該幹什麼 –