2015-09-24 125 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

我不知道该干什么 –