Android Expandale列表不在单击时展开

Android Expandale列表不在单击时展开,android,Android,我试图在这里扩展列表点击可扩展的标题视图。但是我被卡住了为什么我不能显示子列表 这是我的活动课 adapter = new MyExpandableAdapter(getActivity(),parentHashMap,parentObjectCollection); expandableListView.setAdapter(adapter) // Listview Group expanded listener expandableLis

我试图在这里扩展列表点击可扩展的标题视图。但是我被卡住了为什么我不能显示子列表

这是我的活动课

adapter = new    MyExpandableAdapter(getActivity(),parentHashMap,parentObjectCollection);
        expandableListView.setAdapter(adapter)
        // Listview Group expanded listener
        expandableListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
            @Override
            public void onGroupExpand(int groupPosition) {
                Toast.makeText(getActivity(),        parentObjectCollection.get(groupPosition) + " Expanded", Toast.LENGTH_SHORT).show();
            }
        });
适配器类是:

 public class MyExpandableAdapter extends BaseExpandableListAdapter {
private Context context;
private List<String> parentObjectsCollection;
private HashMap<String, List<MarkerInfoData>> parentHashMap;
/* ArrayList<MarkerInfoData> child_list;
LayoutInflater inflater;*/

public MyExpandableAdapter(Context context, HashMap<String, List<MarkerInfoData>> hashmap, List<String> list) {
    parentHashMap = hashmap;
    this.context = context;
    this.parentHashMap = hashmap;
    this.parentObjectsCollection = list;
}


@Override
public View getChildView(int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
    //String childTitle = (String) getChild(groupPosition, childPosition);
    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.child_row, parent, false);
    }
    TextView cityName = (TextView) convertView.findViewById(R.id.txtLocationcityName);
    TextView cityAddress = (TextView) convertView.findViewById(R.id.txtLocationcityAddress);
    TextView cityDistance = (TextView) convertView.findViewById(R.id.txtcityLocationDistanceFromCurrentLocation);
    cityName.setText(parentHashMap.get(parentObjectsCollection.get(groupPosition)).get(childPosition).markerName);
    cityAddress.setText(parentHashMap.get(parentObjectsCollection.get(groupPosition)).get(childPosition).markerAddress);
    String distanceInMiles = parentHashMap.get(parentObjectsCollection.get(groupPosition)).get(childPosition).distance;
    if (distanceInMiles != null && distanceInMiles.length() > 0) {
        cityDistance.setText(distanceInMiles + "\nMiles");
    } else {
        cityDistance.setText("");
    }
    //childtextview.setText(childTitle);

    return convertView;
}

@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
    String GroupTitle = (String) getGroup(groupPosition);
    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.parent_row, parent, false);
    }
    TextView parenttextview = (TextView) convertView.findViewById(R.id.textviewparent);
    parenttextview.setText(GroupTitle);
    return convertView;
}

@Override
public Object getChild(int groupPosition, int childPosition) {
    return this.parentHashMap.get(this.parentObjectsCollection.get(groupPosition)).get(childPosition);
}

@Override
public long getChildId(int groupPosition, int childPosition) {
    return childPosition;
}

@Override
public int getChildrenCount(int groupPosition) {
     return this.parentHashMap.get(this.parentObjectsCollection.get(groupPosition)).size();
}

@Override
public Object getGroup(int groupPosition) {
    return this.parentObjectsCollection.get(groupPosition);
}

@Override
public int getGroupCount() {
      return parentObjectsCollection.size();
}


@Override
public long getGroupId(int groupPosition) {
    return groupPosition;
}


@Override
public boolean hasStableIds() {
    return true;
}

@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
    return true;
}
}
公共类MyExpandableAdapter扩展了BaseExpandableListAdapter{
私人语境;
私有列表parentObjectsCollection;
私有HashMap parentHashMap;
/*ArrayList子列表;
充气机*/
公共MyExpandableAdapter(上下文上下文、哈希映射、哈希映射、列表){
parentHashMap=hashmap;
this.context=上下文;
this.parentHashMap=hashmap;
this.parentObjectsCollection=列表;
}
@凌驾
公共视图getChildView(int-groupPosition,final int-childPosition,boolean isLastChild,View-convertView,ViewGroup-parent){
//String childTitle=(String)getChild(groupPosition,childPosition);
if(convertView==null){
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
convertView=充气机。充气(R.layout.child_行,父,false);
}
TextView cityName=(TextView)convertView.findViewById(R.id.txtLocationcityName);
TextView cityAddress=(TextView)convertView.findViewById(R.id.txtLocationcityAddress);
TextView cityDistance=(TextView)convertView.findViewById(R.id.txtcityLocationDistanceFromCurrentLocation);
cityName.setText(parentHashMap.get(parentObjectsCollection.get(groupPosition)).get(childPosition.markerName);
cityAddress.setText(parentHashMap.get(parentObjectsCollection.get(groupPosition)).get(childPosition.markerAddress);
String distanceInMiles=parentHashMap.get(parentObjectsCollection.get(groupPosition)).get(childPosition).distance;
if(distanceInMiles!=null&&distanceInMiles.length()>0){
cityDistance.setText(distanceInMiles+“\n英里”);
}否则{
cityDistance.setText(“”);
}
//childtextview.setText(childTitle);
返回视图;
}
@凌驾
公共视图getGroupView(int groupPosition、布尔isExpanded、视图convertView、视图组父级){
字符串GroupTitle=(字符串)getGroup(groupPosition);
if(convertView==null){
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
convertView=充气机。充气(R.layout.parent\u行,parent,false);
}
TextView parenttextview=(TextView)convertView.findViewById(R.id.textviewparent);
parenttextview.setText(GroupTitle);
返回视图;
}
@凌驾
公共对象getChild(int-groupPosition,int-childPosition){
返回this.parentHashMap.get(this.parentObjectsCollection.get(groupPosition)).get(childPosition);
}
@凌驾
公共长getChildId(int-groupPosition,int-childPosition){
返回子位置;
}
@凌驾
公共整数getChildrenCount(整数组位置){
返回此.parentHashMap.get(this.parentObjectsCollection.get(groupPosition)).size();
}
@凌驾
公共对象getGroup(int-groupPosition){
返回此.parentObjectsCollection.get(groupPosition);
}
@凌驾
public int getGroupCount(){
返回parentObjectsCollection.size();
}
@凌驾
公共长getGroupId(int-groupPosition){
返回组位置;
}
@凌驾
公共布尔表ID(){
返回true;
}
@凌驾
公共布尔值isChildSelectable(int-groupPosition,int-childPosition){
返回true;
}
}

我认为您的代码中缺少onGroupClick方法,如果处理了click,该方法将返回true。

试试这个

  expandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
        @Override
        public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
            Toast.makeText(MainActivity.this,headers.get(groupPosition)+"--"+headeritems.get(headers.get(groupPosition)).get(childPosition),Toast.LENGTH_SHORT).show();
            return false;
        }
    });

请参阅此处:-

post XML of
R.layout.parent_row
file.parentrow正在膨胀问题在子行中返回此.parentHashMap.get(this.parentObjectsCollection.get(groupPosition)).size();返回null。我在代码中添加了这个。expandableListView.setOnGroupExpandListener(新的expandableListView.OnGroupExpandListener(){@Override public void onGroupExpand(int groupPosition){Toast.makeText(getActivity(),parentObjectCollection.get(groupPosition)+“Expanded”,Toast.LENGTH_SHORT.show();});