2015-09-24 2 views
0

У меня есть кнопка, и когда я нажимаю эту кнопку, мой первый пользовательский вид сетки появляется как диалог. Когда я нажимаю элемент, появляется второе окно с настраиваемой сеткой, отклоняя мое первое настраиваемое представление сетки. Теперь проблема здесь, когда я нажимаю элемент во втором настраиваемом виде сетки, ничего не происходит. Мой setOnItemClickListener() там не работает. Я не смог проследить свою проблему, где я ошибся.Grid View 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 boss ennokke vilikunne –

ответ

3

В вашем Gridview макете, если вы кликабельны виджетов, как кнопки или ImageButton изменить его и попробовать.

Это андроид не распознает нажмите событие внутри взглядов 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

Попробуйте использовать Предупреждающий набор ог

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

i dint do it man –

 Смежные вопросы

  • Нет связанных вопросов^_^