Java 可展开列表视图组不可单击?

Java 可展开列表视图组不可单击?,java,android,listview,expandablelistview,Java,Android,Listview,Expandablelistview,您好,我有一个用于Expandalbe列表视图的自定义适配器,但我无法使其中的项目可单击? 以下是一些片段: 在onCreate()中调用createAdapter() 此外,我还尝试在customAdapter的onCreateGroupView()Methodood()中添加一些代码:(检查“请参见此处”注释) @覆盖 公共视图getGroupView(int i,布尔b,视图视图,视图组视图组){//Group 最终任务myTask=getGroup(i); 最后一个字符串parentCo

您好,我有一个用于Expandalbe列表视图的自定义适配器,但我无法使其中的项目可单击? 以下是一些片段:
onCreate()中调用
createAdapter()

此外,我还尝试在customAdapter的
onCreateGroupView()
Methodood()中添加一些代码:(检查“请参见此处”注释)

@覆盖
公共视图getGroupView(int i,布尔b,视图视图,视图组视图组){//Group
最终任务myTask=getGroup(i);
最后一个字符串parentCode=myTask.getCode();
最终字符串text=myTask.getTaskText();
最终ExpandableListView myExpandableListView=(ExpandableListView)视图组;
如果(视图==null){
LayoutInflater infalInflater=(LayoutInflater)this.context
.getSystemService(上下文布局\充气机\服务);
视图=infalInflater.充气(R.layout.parent_项,视图组,false);
}
//看这里
如果(!view.isClickable()){view.setClickable(true);}//请参见此处!((MainActivity)上下文).createSubTask(parentCode));
如果(!view.isLongClickable()){view.setLongClickable(true);}
view.setOnLongClickListener((viewL2)->{
最终字符序列[]选项对话框={“编辑”,“删除”};
((MainActivity)context.myDialog.setSingleChoiceItems(optionDialog,0,new DialogInterface.OnClickListener()){
@凌驾
公共void onClick(DialogInterface,inti){
如果(i==0){
最终意图myIntent=新意图(上下文、InputActivity.class);
myIntent.putExtra(“请求”,6);
myIntent.putExtra(“oldTask”,myTask.getTaskText());
myIntent.putExtra(“taskCode”,myTask.getCode());
((主要活动)背景)。startActivityForResult(我的意图,6);
dialogInterface.dismise();
}
如果(i==1){
realm.executeTransaction((realm)->myTask.deleteTask());
realm.refresh();
notifyDataSetChanged();
dialogInterface.dismise();
}
}
});
((MainActivity)context.myDialog.show();
返回false;
}
);
返回视图;
}

但是,当我在Emulator中运行它时,这些项目是不可单击的。(仅可长时间单击)

可能是因为您没有像对
视图所做的那样覆盖
myAddSubtaskButton
onClick()
方法,这是一个单一的抽象方法(也称为Lambda表达式)。您可以看到“->”符号,因此“onClick()”将自动覆盖。不管怎样,我解决了这个问题。事实证明,我不能同时使用“expListView.setOnclickListener()”和“view.setOnLongClickListener()”,可能是因为一个在MainActivity中调用,另一个在Adapter活动中调用。因此,我只是删除了使用“expListView”所做的一切,并将所有“onClickListener”方法都移动到了“GetGroupView”中。现在很有魅力。
    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);
}
    @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;
}