2017-07-09 2 views
0

Hallo Ich habe einen benutzerdefinierten Adapter für meine Expandalbe Listenansicht, aber ich kann die Elemente nicht klickbar machen? Hier sind einige Auszüge:
createAdapter() in onCreate()Erweiterbare Listenansicht Gruppen sind nicht anklickbar?

private void createAdapter(){ 
    expListView = (ExpandableListView) findViewById(R.id.lv_exp); 
    final myAdapter listAdapter = new myAdapter(realm, this); 
    expListView.setClickable(true); 
    expListView.setOnGroupClickListener((ExpandableListView expandableListView, View view, int i, long l) -> { 
     final boolean groupExpanded = expandableListView.isGroupExpanded(i); 
     if(groupExpanded) { expandableListView.collapseGroup(i); } 
     else { expandableListView.expandGroup(i); } 
     return false; 
    });   
    expListView.setAdapter(listAdapter); 
} 

genannt wird, auch habe ich versucht, einen Code in der onCreateGroupView() MeTHOOD des customAdapter setzen: (die hier KOMMENTAR überprüfen SEE)

@Override 
public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {  //Group 
    final Task myTask = getGroup(i); 
    final String parentCode = myTask.getCode(); 
    final String text = myTask.getTaskText(); 
    final ExpandableListView myExpandableListView = (ExpandableListView) viewGroup; 
    if (view == null) { 
     LayoutInflater infalInflater = (LayoutInflater) this.context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view = infalInflater.inflate(R.layout.parent_item, viewGroup, false); 
    } 
     //SEE HERE 
    if (!view.isClickable()) { view.setClickable(true);} //SEE HERE!<< 
    final TextView myTextview = (TextView) view.findViewById(R.id.parent_text_view); 
    myTextview.setText(text); 
    final ImageButton myAddSubtaskBtn = (ImageButton) view.findViewById(R.id.button_add_subtask); 
    myAddSubtaskBtn.setOnClickListener((viewL) -> ((MainActivity) context).createSubTask(parentCode)); 
    if (!view.isLongClickable()){ view.setLongClickable(true);  } 
    view.setOnLongClickListener((viewL2) -> { 
       final CharSequence[] optionsDialog = {"Edit", "Delete"}; 
       ((MainActivity) context).myDialog.setSingleChoiceItems(optionsDialog, 0, new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialogInterface, int i) { 
         if(i==0){ 
          final Intent myIntent = new Intent (context, InputActivity.class); 
          myIntent.putExtra("request", 6); 
          myIntent.putExtra("oldTask", myTask.getTaskText()); 
          myIntent.putExtra("taskCode", myTask.getCode()); 
          ((MainActivity) context).startActivityForResult(myIntent, 6); 
          dialogInterface.dismiss(); 
         } 
         if(i==1){ 
          realm.executeTransaction((realm) -> myTask.deleteTask()); 
          realm.refresh(); 
          notifyDataSetChanged(); 
          dialogInterface.dismiss(); 
         } 
        } 
       }); 
       ((MainActivity) context).myDialog.show(); 
       return false; 
      } 
    ); 
    return view; 
} 

noch, wenn ich Führen Sie es im Emulator aus, die Elemente sind nicht anklickbar. (Nur lange klickbare)

Antwort

0

Vielleicht geschieht es, weil Sie nicht onClick() Methode für Ihre myAddSubtaskButton hat außer Kraft setzen, wie Sie für Ihre tat view

+1

Es ist einzige abstrakte Methode (a.k.a Lambda-Ausdruck). Sie können das "->" Zeichen sehen, so dass 'onClick()' automatisch überschrieben wird. Wie auch immer, ich habe das Problem behoben. Es stellt sich heraus, dass ich sowohl "expListView.setOnclickListener()" als auch "view.setOnLongClickListener()" nicht verwenden kann, möglicherweise weil einer in MainActivity und der andere in der Adapter Activity aufgerufen wird. Also habe ich einfach alles, was ich gemacht habe, mit 'expListView' entfernt und alle 'onClickListener'-Methoden in' getGrouView 'verschoben. Funktioniert jetzt wie Charme. –

Verwandte Themen