Java 另一个ExpandableView中的ExpandableView获胜';不要给孩子充气

Java 另一个ExpandableView中的ExpandableView获胜';不要给孩子充气,java,android,expandablelistview,expandablelistadapter,android-inflate,Java,Android,Expandablelistview,Expandablelistadapter,Android Inflate,为了解决这个问题,我已经苦苦挣扎了几个星期。我有两个可展开视图,一个在另一个内部。每当我单击第二级可展开视图项时,它不会膨胀其子项。我单击时看到的只是一个小滚动条,它显示在可展开视图项本身的右侧。 使用带有固定文本视图的简单布局会导致相同的行为,这意味着问题不在ShiftListItem对象内 此外,从未调用过getChildView() YearListAdapter: package com.dg.android.salarycalculator.adapter; import java

为了解决这个问题,我已经苦苦挣扎了几个星期。我有两个可展开视图,一个在另一个内部。每当我单击第二级可展开视图项时,它不会膨胀其子项。我单击时看到的只是一个小滚动条,它显示在可展开视图项本身的右侧。 使用带有固定文本视图的简单布局会导致相同的行为,这意味着问题不在ShiftListItem对象内

此外,从未调用过getChildView()

YearListAdapter:

package com.dg.android.salarycalculator.adapter;

import java.util.ArrayList;
import java.util.Calendar;

import com.dg.android.salarycalculator.R;
import com.dg.android.salarycalculator.Salary;
import com.dg.android.salarycalculator.views.MonthsListView;
import android.content.Context;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;

public class YearListAdapter extends BaseExpandableListAdapter {

private Context _context;
private SparseArray<SparseArray<ArrayList<Salary>>> _shiftYears;

public YearListAdapter(
        SparseArray<SparseArray<ArrayList<Salary>>> shiftYears,
        Context context) {
    super();

    _context = context;
    _shiftYears = shiftYears;

}

public Object getChild(int arg0, int arg1) {
    return (null == _shiftYears.get(_shiftYears.keyAt(arg0))) ? null
            : _shiftYears.get(_shiftYears.keyAt(arg0)).get(
                    _shiftYears.get(_shiftYears.keyAt(arg0)).keyAt(arg1));
}

public long getChildId(int arg0, int arg1) {
    return arg1;
}

public View getChildView(int arg0, int arg1, boolean arg2,
        View convertView, ViewGroup arg4) {

    MonthsListView monthLevelExpandable = new MonthsListView(_context);

    MonthListAdapter adapter = new MonthListAdapter(_context,
            _shiftYears.get(_shiftYears.keyAt(arg0)));
    monthLevelExpandable.setAdapter(adapter);

    adapter.forceReload();
    monthLevelExpandable.setGroupIndicator(null);

    return monthLevelExpandable;

}

public int getChildrenCount(int arg0) {
    if (null == _shiftYears.get(_shiftYears.keyAt(arg0)))
        return 0;
    return _shiftYears.get(_shiftYears.keyAt(arg0)).size();
}

public Object getGroup(int arg0) {
    return (null == _shiftYears) ? null : _shiftYears.get(_shiftYears
            .keyAt(arg0));
}

public int getGroupCount() {
    return _shiftYears.size();
}

public long getGroupId(int arg0) {
    return arg0;
}

public View getGroupView(int arg0, boolean isExpanded, View convertView,
        ViewGroup arg3) {

    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) _context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.year_list_view_item, null);

    }

    TextView title = (TextView) convertView.findViewById(R.id.yearTitle);
    title.setText("" + _shiftYears.keyAt(arg0));

    return convertView;

}

public boolean hasStableIds() {
    return true;
}

public boolean isChildSelectable(int arg0, int arg1) {
    return true;
}

public void forceReload() {
    notifyDataSetChanged();
}

}
package com.dg.android.salarycalculator.adapter;

import java.util.ArrayList;
import java.util.Calendar;

import com.dg.android.salarycalculator.R;
import com.dg.android.salarycalculator.Salary;
import com.dg.android.salarycalculator.views.ShiftListItem;

import android.content.Context;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;

public class MonthListAdapter extends BaseExpandableListAdapter {

private Context _context;
private SparseArray<ArrayList<Salary>> _shiftMonths;

public MonthListAdapter(Context context,
        SparseArray<ArrayList<Salary>> shiftMonths) {
    super();

    _context = context;
    _shiftMonths = shiftMonths;

}

public Object getChild(int groupPosition, int childPosition) {
    return (null == _shiftMonths) ? null : _shiftMonths.get(
            _shiftMonths.keyAt(groupPosition)).get(childPosition);

}

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

public View getChildView(int groupPosition, int childPosition,
        boolean isLastChild, View convertView, ViewGroup parent) {


    ShiftListItem sli;
    if (null == convertView) {
        sli = (ShiftListItem) View.inflate(_context,
                R.layout.shift_list_item, null);
    } else {
        sli = (ShiftListItem) convertView;
    }
    sli.setSalary(_shiftMonths.get(_shiftMonths.keyAt(groupPosition)).get(
            childPosition));
    return sli;
}





public int getChildrenCount(int groupPosition) {
    if (null == _shiftMonths
            || null == _shiftMonths.get(_shiftMonths.keyAt(groupPosition)))
        return 0;           
    return _shiftMonths.get(_shiftMonths.keyAt(groupPosition)).size();
}

public Object getGroup(int groupPosition) {
    return (null == _shiftMonths) ? null : _shiftMonths.get(_shiftMonths
            .keyAt(groupPosition));
}

public int getGroupCount() {
    return _shiftMonths.size();
}

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

public View getGroupView(int groupPosition, boolean isExpanded,
        View convertView, ViewGroup parent) {

    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) _context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.month_list_view_item, null);
    }

    TextView title = (TextView) convertView.findViewById(R.id.monthTitle);
    title.setText("" + _shiftMonths.keyAt(groupPosition));

    return convertView;

}

public boolean hasStableIds() {
    return true;
}

public boolean isChildSelectable(int groupPosition, int childPosition) {
    return true;
}

public void forceReload() {
    notifyDataSetChanged();
}

}
package com.dg.android.salarycalculator.adapter;
导入java.util.ArrayList;
导入java.util.Calendar;
导入com.dg.android.salarycalculator.R;
导入com.dg.android.salarycalculator.Salary;
导入com.dg.android.salarycalculator.views.monthListView;
导入android.content.Context;
导入android.util.SparseArray;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.BaseExpandableListAdapter;
导入android.widget.TextView;
公共类YearListAdapter扩展了BaseExpandableListAdapter{
私人语境(private Context)(私人语境);;
私人SparseArray_shiftyear;
公共年表适配器(
SparseArray shiftYears,
上下文(上下文){
超级();
_上下文=上下文;
_shiftYears=shiftYears;
}
公共对象getChild(int arg0,int arg1){
return(null===\u shiftYears.get(\u shiftYears.keyAt(arg0))?null
:_shiftYears.get(_shiftYears.keyAt(arg0)).get(
_获取(_shiftYears.keyAt(arg0)).keyAt(arg1));
}
公共长getChildId(int arg0,int arg1){
返回arg1;
}
公共视图getChildView(int arg0、int arg1、布尔arg2、,
视图转换视图,视图组arg4){
MonthListView monthLevelExpandable=新的MonthListView(_上下文);
MonthListAdapter=新的MonthListAdapter(\u上下文,
_shiftYears.get(_shiftYears.keyAt(arg0));
monthLevelExpandable.setAdapter(适配器);
适配器。forceReload();
monthLevelExpandable.setGroupIndicator(空);
返回月可扩展;
}
公共整数getChildrenCount(整数arg0){
if(null==\u shiftYears.get(\u shiftYears.keyAt(arg0)))
返回0;
return _shiftYears.get(_shiftYears.keyAt(arg0)).size();
}
公共对象getGroup(int arg0){
return(null==\u shiftYears)?null:\u shiftYears.get(\u shiftYears)
.keyAt(arg0));
}
public int getGroupCount(){
return_shiftYears.size();
}
公共长getGroupId(int arg0){
返回arg0;
}
公共视图getGroupView(int arg0,布尔值isExpanded,视图convertView,
视图组(arg3){
if(convertView==null){
LayoutInflater充气器=(LayoutInflater)\u上下文
.getSystemService(上下文布局\充气机\服务);
convertView=充气机。充气(R.layout.year\u list\u view\u item,空);
}
TextView title=(TextView)convertView.findViewById(R.id.yearTitle);
title.setText(“+_shiftYears.keyAt(arg0));
返回视图;
}
公共布尔表ID(){
返回true;
}
公共布尔值isChildSelectable(int arg0,int arg1){
返回true;
}
公共无效强制重新加载(){
notifyDataSetChanged();
}
}
每月调整时间:

package com.dg.android.salarycalculator.adapter;

import java.util.ArrayList;
import java.util.Calendar;

import com.dg.android.salarycalculator.R;
import com.dg.android.salarycalculator.Salary;
import com.dg.android.salarycalculator.views.MonthsListView;
import android.content.Context;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;

public class YearListAdapter extends BaseExpandableListAdapter {

private Context _context;
private SparseArray<SparseArray<ArrayList<Salary>>> _shiftYears;

public YearListAdapter(
        SparseArray<SparseArray<ArrayList<Salary>>> shiftYears,
        Context context) {
    super();

    _context = context;
    _shiftYears = shiftYears;

}

public Object getChild(int arg0, int arg1) {
    return (null == _shiftYears.get(_shiftYears.keyAt(arg0))) ? null
            : _shiftYears.get(_shiftYears.keyAt(arg0)).get(
                    _shiftYears.get(_shiftYears.keyAt(arg0)).keyAt(arg1));
}

public long getChildId(int arg0, int arg1) {
    return arg1;
}

public View getChildView(int arg0, int arg1, boolean arg2,
        View convertView, ViewGroup arg4) {

    MonthsListView monthLevelExpandable = new MonthsListView(_context);

    MonthListAdapter adapter = new MonthListAdapter(_context,
            _shiftYears.get(_shiftYears.keyAt(arg0)));
    monthLevelExpandable.setAdapter(adapter);

    adapter.forceReload();
    monthLevelExpandable.setGroupIndicator(null);

    return monthLevelExpandable;

}

public int getChildrenCount(int arg0) {
    if (null == _shiftYears.get(_shiftYears.keyAt(arg0)))
        return 0;
    return _shiftYears.get(_shiftYears.keyAt(arg0)).size();
}

public Object getGroup(int arg0) {
    return (null == _shiftYears) ? null : _shiftYears.get(_shiftYears
            .keyAt(arg0));
}

public int getGroupCount() {
    return _shiftYears.size();
}

public long getGroupId(int arg0) {
    return arg0;
}

public View getGroupView(int arg0, boolean isExpanded, View convertView,
        ViewGroup arg3) {

    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) _context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.year_list_view_item, null);

    }

    TextView title = (TextView) convertView.findViewById(R.id.yearTitle);
    title.setText("" + _shiftYears.keyAt(arg0));

    return convertView;

}

public boolean hasStableIds() {
    return true;
}

public boolean isChildSelectable(int arg0, int arg1) {
    return true;
}

public void forceReload() {
    notifyDataSetChanged();
}

}
package com.dg.android.salarycalculator.adapter;

import java.util.ArrayList;
import java.util.Calendar;

import com.dg.android.salarycalculator.R;
import com.dg.android.salarycalculator.Salary;
import com.dg.android.salarycalculator.views.ShiftListItem;

import android.content.Context;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;

public class MonthListAdapter extends BaseExpandableListAdapter {

private Context _context;
private SparseArray<ArrayList<Salary>> _shiftMonths;

public MonthListAdapter(Context context,
        SparseArray<ArrayList<Salary>> shiftMonths) {
    super();

    _context = context;
    _shiftMonths = shiftMonths;

}

public Object getChild(int groupPosition, int childPosition) {
    return (null == _shiftMonths) ? null : _shiftMonths.get(
            _shiftMonths.keyAt(groupPosition)).get(childPosition);

}

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

public View getChildView(int groupPosition, int childPosition,
        boolean isLastChild, View convertView, ViewGroup parent) {


    ShiftListItem sli;
    if (null == convertView) {
        sli = (ShiftListItem) View.inflate(_context,
                R.layout.shift_list_item, null);
    } else {
        sli = (ShiftListItem) convertView;
    }
    sli.setSalary(_shiftMonths.get(_shiftMonths.keyAt(groupPosition)).get(
            childPosition));
    return sli;
}





public int getChildrenCount(int groupPosition) {
    if (null == _shiftMonths
            || null == _shiftMonths.get(_shiftMonths.keyAt(groupPosition)))
        return 0;           
    return _shiftMonths.get(_shiftMonths.keyAt(groupPosition)).size();
}

public Object getGroup(int groupPosition) {
    return (null == _shiftMonths) ? null : _shiftMonths.get(_shiftMonths
            .keyAt(groupPosition));
}

public int getGroupCount() {
    return _shiftMonths.size();
}

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

public View getGroupView(int groupPosition, boolean isExpanded,
        View convertView, ViewGroup parent) {

    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) _context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.month_list_view_item, null);
    }

    TextView title = (TextView) convertView.findViewById(R.id.monthTitle);
    title.setText("" + _shiftMonths.keyAt(groupPosition));

    return convertView;

}

public boolean hasStableIds() {
    return true;
}

public boolean isChildSelectable(int groupPosition, int childPosition) {
    return true;
}

public void forceReload() {
    notifyDataSetChanged();
}

}
package com.dg.android.salarycalculator.adapter;
导入java.util.ArrayList;
导入java.util.Calendar;
导入com.dg.android.salarycalculator.R;
导入com.dg.android.salarycalculator.Salary;
导入com.dg.android.salarycalculator.views.ShiftListItem;
导入android.content.Context;
导入android.util.SparseArray;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.BaseExpandableListAdapter;
导入android.widget.TextView;
公共类MonthListAdapter扩展了BaseExpandableListAdapter{
私人语境(private Context)(私人语境);;
私人SparseArray轮班数月;
公共MonthListAdapter(上下文,
SparseArray移位(个月){
超级();
_上下文=上下文;
_换班月数=换班月数;
}
公共对象getChild(int-groupPosition,int-childPosition){
返回值(null==\u shiftMonths)?null:\u shiftMonths.get(
_shiftMonths.keyAt(groupPosition)).get(childPosition);
}
公共长getChildId(int-groupPosition,int-childPosition){
返回子位置;
}
公共视图getChildView(int-groupPosition、int-childPosition、,
布尔值isLastChild、视图转换视图、视图组父级){
移位项sli;
if(null==convertView){
sli=(ShiftListItem)视图。膨胀(\u上下文,
R.layout.shift\u list\u项,空);
}否则{
sli=(移位列表项)转换视图;
}
sli.setSalary(_shiftMonths.get(_shiftMonths.keyAt(groupPosition)).get(
儿童位置);
返回sli;
}
公共整数getChildrenCount(整数组位置){
如果(空==\u移位个月
||null==\u shiftMonths.get(\u shiftMonths.keyAt(groupPosition)))
返回0;
返回_shiftMonths.get(_shiftMonths.keyAt(groupPosition)).size();
}
公共对象getGroup(int-groupPosition){
返回值(null==\u shiftMonths)?null:\u shiftMonths.get(\u shiftMonths)
.keyAt(groupPosition));
}
public int getGroupCount(){
返回_shiftMonths.size();
}
公共长getGroupId(int-groupPosition){
返回组位置;
}
公共视图getGroupView(int-groupPosition,布尔值isExpanded,
视图(视图、视图组父级){
if(convertView==null){
LayoutInflater充气器=(LayoutInflater)\u上下文
.getSystemService(上下文布局\充气机\服务);
convertView=充气机。充气(R.layout.month\u list\u view\u item,空);
}
TextView title=(TextView)convertView.findViewById(R.id.monthTitle);
title.setText(“+_shiftMonths.keyAt(groupPosition));
返回视图;
}
公共布尔表ID(){
返回true;
}
公共布尔值isChildSelectable(int-groupPosition,int-childPosition)
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        widthMeasureSpec = MeasureSpec
                .makeMeasureSpec(960, MeasureSpec.AT_MOST);
        heightMeasureSpec = MeasureSpec.makeMeasureSpec(600,
                MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }