我试图通过互联网找到我的答案的解决方案,但我找不到一个好的解决方案.我看了这个主题: Android ExpandableListView Child Headers,但它对我不起作用. 我现在拥有的(屏幕): 我的代码是: p
          我现在拥有的(屏幕):
我的代码是:
private void fillData() {
    ExpandableListView lv;
    lv = (ExpandableListView) getActivity().findViewById(R.id.grades_view);
    lv.setItemsCanFocus(false);
    lv.setChoiceMode(ExpandableListView.CHOICE_MODE_SINGLE);
    View view = View.inflate(getActivity(), R.layout.list_header, null);
    lv.addHeaderView(view, null, false);
    dbh = new DatabaseHelper(getActivity());
    MyExpandableListAdapter mAdapter = new MyExpandableListAdapter(
            getActivity(), dbh);
    mAdapter.synchronize();
    lv.setAdapter(mAdapter);
    registerForContextMenu(lv);
}
public class MyExpandableListAdapter extends BaseExpandableListAdapter {
    private List<Subject> mSubjects = new ArrayList<Subject>();
    private List<List<Course>> mCourse = new ArrayList<List<Course>>();
    private DatabaseHelper dbh;
    private LayoutInflater inflater;
    public MyExpandableListAdapter(Context context, DatabaseHelper dbh) {
        this.dbh = dbh;
        this.inflater = LayoutInflater.from(context);
    }
    public void synchronize() {
        mSubjects = dbh.getSubjects();
        for (Subject s : mSubjects) {
            mCourse.add(dbh.getCourses(s));
        }
    }
    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return mCourse.get(groupPosition).get(childPosition);
    }
    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return getChild(groupPosition, childPosition).hashCode();
    }
    @Override
    public View getChildView(int groupPosition, int childPosition,
            boolean isLastChild, View convertView, ViewGroup parent) {
        Course c = (Course) getChild(groupPosition, childPosition);
        if (convertView == null)
            convertView = inflater.inflate(R.layout.list_item_child,
                    parent, false);
        TextView txt = (TextView) convertView.findViewById(R.id.code);
        txt.setText(c.getCode());
        TextView txt1 = (TextView) convertView.findViewById(R.id.ects);
        txt1.setText(String.valueOf(c.getEcts()));
        TextView txt2 = (TextView) convertView.findViewById(R.id.grade);
        if (c.getGrade() == -1) {
            txt2.setText("-");
        } else {
            txt2.setText(String.valueOf(c.getGrade()));
        }
        return convertView;
    }
    @Override
    public int getChildrenCount(int groupPosition) {
        return mCourse.get(groupPosition).size();
    }
    @Override
    public Object getGroup(int groupPosition) {
        return mSubjects.get(groupPosition);
    }
    @Override
    public int getGroupCount() {
        return mSubjects.size();
    }
    @Override
    public long getGroupId(int groupPosition) {
        return mSubjects.get(groupPosition).hashCode();
    }
    @Override
    public View getGroupView(int groupPosition, boolean isExpanded,
            View convertView, ViewGroup parent) {
        Subject s = (Subject) getGroup(groupPosition);
        if (convertView == null)
            convertView = inflater.inflate(R.layout.list_item, parent,
                    false);
        TextView txt1 = (TextView) convertView.findViewById(R.id.name);
        txt1.setText(String.valueOf(s.getName()));
        TextView txt2 = (TextView) convertView.findViewById(R.id.semester);
        txt2.setText(String.valueOf(s.getSemester()));
        return convertView;
    }
    @Override
    public boolean hasStableIds() {
        return true;
    }
    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return true;
    }
} 
 我们可以看到,要使用我使用的第一级头(Name和Sem):
View view = View.inflate(getActivity(), R.layout.list_header, null); lv.addHeaderView(view, null, false);
但我不知道如何对孩子们这样做(带有Code,ECTS和Grade的标题).
先感谢您.
只需添加一个“额外的孩子”@Override
    public Object getChild(int groupPosition, int childPosition) {
        if (childPosition == 0)
            return null;
        return mCourse.get(groupPosition).get(childPosition - 1);
    }
    @Override
    public long getChildId(int groupPosition, int childPosition) {
        if (childPosition == 0)
            return 0;
        return getChild(groupPosition, childPosition).hashCode();
    }
    @Override
    public View getChildView(int groupPosition, int childPosition,
            boolean isLastChild, View convertView, ViewGroup parent) {
        if (childPosition == 0) {
            convertView = inflater.inflate(R.layout.list_item_child, null);
            // your special header
            return convertView;
        } 
        // rest of your method
    } 
 你可以有不同的布局或任何你喜欢的地方.
