Android ExpandableListView不会响应并接收任何单击

Android ExpandableListView不会响应并接收任何单击,android,events,listview,Android,Events,Listview,在尝试将可扩展列表插入现有活动(不是从ExpandalbleListActivity派生的)时,我遇到了几个问题 该列表的显示方式与我的XML布局中描述的相同,但当我尝试单击/展开它时,它不会做出反应 为了进行测试,我在列表上方插入了一个按钮,它收到了点击。列表本身没有说clickable=false 可扩展列表的代码: <ExpandableListView android:id="@+id/h_Zzwa_activity_listView" android:layout_width="

在尝试将可扩展列表插入现有活动(不是从ExpandalbleListActivity派生的)时,我遇到了几个问题

该列表的显示方式与我的XML布局中描述的相同,但当我尝试单击/展开它时,它不会做出反应

为了进行测试,我在列表上方插入了一个按钮,它收到了点击。列表本身没有说clickable=false

可扩展列表的代码:

<ExpandableListView
android:id="@+id/h_Zzwa_activity_listView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:groupIndicator="@color/transparent" android:clickable="true">
</ExpandableListView>
适配器(已启动并调用组..)

公共类HZzwaListAdapter扩展了BaseExpandableListAdapter
{
私人清单项目;
私人语境;
公共HZzwaListAdapter(上下文)
{
myContext=上下文;
}
公共HZzwaListAdapter(上下文、列表项)
{
myContext=上下文;
这个项目=项目;
}
@凌驾
公共视图getChildView(int-groupPosition、int-childPosition、,
布尔值isLastChild、视图转换视图、视图组父级)
{
if(convertView==null)
{
LayoutFlater充气器=(LayoutFlater)myContext
.getSystemService(上下文布局\充气机\服务);
convertView=充气机。充气(R.layout.h_Zzwa_列表_子项,
无效);
}
HMyMessage message=items.get(childPosition);
如果(消息!=null)
{
TextView tvPlayerName=(TextView)convertView
.findViewById(R.id.h_Zzwalistitem_info_signText);
tvPlayerName.setText(message.info.getSign());
}
返回视图;
}
@凌驾
公共整数getChildrenCount(整数组位置)
{
返回1;
}
@凌驾
公共对象getGroup(int-groupPosition)
{
返回null;
}
@凌驾
public int getGroupCount()
{
返回items.size();
}
@凌驾
公共长getGroupId(int-groupPosition)
{
返回组位置;
}
@凌驾
公共视图getGroupView(int-groupPosition,布尔值isExpanded,
视图(视图、视图组父级)
{
if(convertView==null)
{
LayoutFlater充气器=(LayoutFlater)myContext
.getSystemService(上下文布局\充气机\服务);
convertView=充气机
.充气(R.layout.h\u machching\u列表项,空);
}
//获取项目并将其设置到视图中
HMyMessage计划=(HMyMessage)items.get(groupPosition);
如果(计划!=null)
{
TextView pname=(TextView)convertView
.findViewById(R.id.hzzwalistitem_pname);
TextView pF=(TextView)convertView
.findViewById(R.id.hzzwalistitem_pText);
如果(pname!=null)
{
pname.setText(plan.requester.getName());
}
如果(pF!=null)
{
pF.SETEXT(平面图+单位);
}
}
返回视图;
}
@凌驾
公共布尔表ID()
{
返回false;
}
@凌驾
公共布尔值isChildSelectable(int-groupPosition,int-childPosition)
{
返回true;
}
@凌驾
公共对象getChild(int-groupPosition,int-childPosition)
{
//TODO自动生成的方法存根
返回null;
}
@凌驾
公共长getChildId(int-groupPosition,int-childPosition)
{
//TODO自动生成的方法存根
返回0;
}
}
即使为click或listItemClick事件设置侦听器,也不会发生任何事情

为什么??同样的事情也适用于常见的列表:/


谢谢

您需要使用适当的侦听器来创建可扩展列表。。。它们与普通列表不同

示例:

lv.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { 
    @Override 
    public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id)  
    { 
        // Your code for click action here.
        return true; 
    } 
}); 
还有一个类似的OnGroupClickListener


有关完整的详细信息,请检查在我创建了一个新的group.xml并使用它而不是现有的group.xml之后它的工作情况。请添加子级和组布局。对于listview,当listview的项具有按钮时,listview不会收到类似的问题。我以前遇到过这个问题,所以我必须为适配器中的每个项实现onclick 及


EDIT:Put
android:focusable=“false”
用于
按钮查看或
EditText查看。

I您在父视图中使用了一些可单击组件(如复选框、切换按钮、图像按钮……),然后单击事件不会触发


您可以在适配器中设置,在
getGroupView
中,单击convertView的侦听器。

我知道这是一个老问题,但我最近从程序中收到了相同的问题。My ExpandableListView未响应组单击的单击事件。因此,我没有实现ExpandableListView.OnItemClickListener,而是实现了ExpandableListView.OnGroupClickListener,效果非常好。希望这对以后遇到此问题的人有所帮助。

将android:DegenantFocusability=“BlocksDescents”
添加到您正在充气的任何东西的基本布局中,这些东西不再像应该的那样接收触摸事件。

在适配器中创建一个界面

public interface IExpandableListAdapter {
        void onItemClick(int groupPosition, boolean isExpanded);
}
将此onClickListener添加到holder视图

holderView.setOnClickListener(view -> iExpandableListAdapter.onItemClick(groupPosition, isExpanded));
重写活动中的接口

ExpandableListAdapter expandableListAdapter = new ExpandableListAdapter(context, list, (groupPosition, isExpanded) -> {
        if(isExpanded)
            expandableListView.collapseGroup(groupPosition);
        else
            expandableListView.expandGroup(groupPosition); 
});

现在,您可以在适配器中使用按钮、图像按钮等的单击事件。

Thi Barak,感谢您的帮助,但这没有帮助。expandableList似乎没有收到任何东西:(这很奇怪。它对我来说很有用。但是我使用的是SimpleCorsOrtreeAdapter,所以可能有一些不同,尽管我认为适配器不会有什么不同。看起来真的没有点击触发事件。我将尝试不同的方法。无论如何,谢谢。)我发现包含imagebutton的布局不会引发事件。移除IMAGEBUTTON(改用imageview),它将工作。。。奇怪的是…@elCapitano你应该用上面的评论更新答案。正如你所说的,当它有一个按钮时,设置
android:focusable=“false”
Adding focusable=“false”对我来说很有效。
public interface IExpandableListAdapter {
        void onItemClick(int groupPosition, boolean isExpanded);
}
ExpandableListAdapter expandableListAdapter = new ExpandableListAdapter(context, list, (groupPosition, isExpanded) -> {
        if(isExpanded)
            expandableListView.collapseGroup(groupPosition);
        else
            expandableListView.expandGroup(groupPosition); 
});