Android 微调器作为ExpandableListView子项之一

Android 微调器作为ExpandableListView子项之一,android,expandablelistview,android-spinner,Android,Expandablelistview,Android Spinner,有一个可展开的列表视图,其中微调器是每个子项的一个项目。 问题是父对象的内容在从微调器选择项目时受到影响。而且,从任何微调器中选择项目也会影响所有组的其他微调器的选定项目 除微调器外,还有TextView、EditText和CheckBox。除微调器外,所有视图的行为都符合预期 public class ExpandListAdapter extends BaseExpandableListAdapter { SessionManager session; SharedPreferences s

有一个可展开的列表视图,其中微调器是每个子项的一个项目。 问题是父对象的内容在从微调器选择项目时受到影响。而且,从任何微调器中选择项目也会影响所有组的其他微调器的选定项目

除微调器外,还有TextView、EditText和CheckBox。除微调器外,所有视图的行为都符合预期

public class ExpandListAdapter extends BaseExpandableListAdapter {
SessionManager session;
SharedPreferences sp;
Editor edit;
private Activity context;
ArrayList<String> checkListValues;
ArrayAdapter<String> spinnerAdapter;
CoveragesChildItemModel childCoverageModel;
// private List<String> array_parent_labels;
String parentNameValue;
String spin_edit_value;
ArrayList<String> parentName;

// public CoverageChildFinalValuesModel childValues;
public CoverageParentModel parentValues;
ArrayList<CoverageChildFinalValuesModel> coverage_child_list;
ArrayList<CoverageParentModel> coverage_parent_list;

private static final int[] EMPTY_STATE_SET = {};
private static final int[] GROUP_EXPANDED_STATE_SET = { android.R.attr.state_expanded };
private static final int[][] GROUP_STATE_SETS = { EMPTY_STATE_SET, // 0
        GROUP_EXPANDED_STATE_SET // 1
};

public ExpandListAdapter(Activity context,
        ArrayList<CoverageParentModel> coverage_parent_list) {
    this.context = context;
    this.coverage_parent_list = coverage_parent_list;
}



public Object getChild(int groupPosition, int childPosition) {
    CoverageParentModel parent_cov_model = coverage_parent_list
            .get(groupPosition);
    ArrayList<CoveragesChildItemModel> child_cov_list = parent_cov_model
            .getChildValues();
    return child_cov_list.get(childPosition);
}

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

public ArrayList<CoverageParentModel> getWholeCovergaes() {
    return coverage_parent_list;
}

static class ViewHolder {
    TextView quickquote_child_cov_name;
    EditText quickquote_child_cov_edittext;
    Spinner quickquote_child_cov_spinner;
    CheckBox quickquote_child_cov_checkbox;
}

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

    final ViewHolder holder;

    childCoverageModel = (CoveragesChildItemModel) getChild(groupPosition,
            childPosition);

    LayoutInflater inflater = context.getLayoutInflater();

    if (convertView == null) {
        convertView = inflater.inflate(R.layout.quickquoteoptions_child,parent,
                false);
        holder = new ViewHolder();
        convertView.setTag(holder);
    }else{
        holder = (ViewHolder) convertView.getTag();
    }

    holder.quickquote_child_cov_checkbox = (CheckBox) convertView
            .findViewById(R.id.quickquote_child_cov_checkbox);

    holder.quickquote_child_cov_name = (TextView) convertView
            .findViewById(R.id.quickquote_child_cov_name);
    holder.quickquote_child_cov_edittext = (EditText) convertView
            .findViewById(R.id.quickquote_child_cov_edittext);
    holder.quickquote_child_cov_spinner = (Spinner) convertView
            .findViewById(R.id.quickquote_child_cov_spinner);

    final String s = childCoverageModel.getDisplay_name();

    parentValues = new CoverageParentModel();

    // childValues = new CoverageChildFinalValuesModel();

    holder.quickquote_child_cov_name.setText(childCoverageModel.getDisplay_name());

    holder.quickquote_child_cov_checkbox
            .setOnCheckedChangeListener(new OnCheckedChangeListener() {

                CoveragesChildItemModel childCoverageModelTemp = coverage_parent_list
                        .get(groupPosition).getChildValues()
                        .get(childPosition);

                @Override
                public void onCheckedChanged(CompoundButton arg0,
                        boolean arg1) {

                    if (holder.quickquote_child_cov_checkbox.isChecked()) {

                        coverage_parent_list.get(groupPosition)
                                .getChildValues().get(childPosition)
                                .setChecked(true);

                        if (null != childCoverageModelTemp.getLimitType()) {
                            if (childCoverageModelTemp.getLimitType()
                                    .equalsIgnoreCase(StringResource.WS_LIMIT_TYPE_INDEPENDENT)) {

                                holder.quickquote_child_cov_spinner
                                        .setVisibility(View.VISIBLE);
                                holder.quickquote_child_cov_edittext
                                        .setVisibility(View.GONE);

                                if (null != childCoverageModelTemp
                                        .getLimitvalues()) {

                                    spinnerAdapter = new ArrayAdapter<String>(
                                            context,
                                            android.R.layout.simple_spinner_item,
                                            childCoverageModelTemp
                                                    .getLimitvalues());
                                    spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

                                    holder.quickquote_child_cov_spinner
                                            .setAdapter(spinnerAdapter);
                                }

                            } else if (childCoverageModelTemp
                                    .getLimitType().equalsIgnoreCase(
                                            StringResource.WS_LIMIT_TYPE_USER_INPUT)) {
                                holder.quickquote_child_cov_edittext
                                        .setVisibility(View.VISIBLE);
                                holder.quickquote_child_cov_spinner
                                        .setVisibility(View.GONE);

                            } else {
                                holder.quickquote_child_cov_edittext
                                        .setVisibility(View.GONE);
                                holder.quickquote_child_cov_spinner
                                        .setVisibility(View.GONE);
                            }
                        }
                    }

                    else {
                        coverage_parent_list.get(groupPosition)
                                .getChildValues().get(childPosition)
                                .setChecked(false);

                        holder.quickquote_child_cov_edittext
                                .setVisibility(View.GONE);
                        holder.quickquote_child_cov_spinner
                                .setVisibility(View.GONE);
                    }
                }
            });

    holder.quickquote_child_cov_spinner
            .setOnItemSelectedListener(new OnItemSelectedListener() {



                @Override
                public void onItemSelected(AdapterView<?> arg0, View arg1,
                        int position, long arg3) {

                    String quickquote_child_cov_edittext_new_value = arg0
                            .getItemAtPosition(position).toString();
                    coverage_parent_list
                            .get(groupPosition)
                            .getChildValues()
                            .get(childPosition)
                            .setLatestInputValue(
                                    quickquote_child_cov_edittext_new_value);
                }

                @Override
                public void onNothingSelected(AdapterView<?> arg0) {

                }
            });

    holder.quickquote_child_cov_edittext.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence arg0, int arg1, int arg2,
                int arg3) {

            String quickquote_child_cov_edittext_new_value = arg0
                    .toString();
            coverage_parent_list
                    .get(groupPosition)
                    .getChildValues()
                    .get(childPosition)
                    .setLatestInputValue(
                            quickquote_child_cov_edittext_new_value);
        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1,
                int arg2, int arg3) {

        }

        @Override
        public void afterTextChanged(Editable arg0) {

        }
    });

    return convertView;
}

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

public View getGroupView(int groupPosition, boolean isExpanded,
        View convertView, ViewGroup parent) {
    CoverageParentModel covParentModel = (CoverageParentModel) getGroup(groupPosition);
    if (convertView == null) {
        LayoutInflater infalInflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = infalInflater.inflate(
                R.layout.quickquoteoptions_group, null);
    }
    TextView item = (TextView) convertView.findViewById(R.id.group_label);
    ImageView img = (ImageView) convertView
            .findViewById(R.id.explist_indicator);
    item.setTypeface(null, Typeface.BOLD);
    item.setText(covParentModel.getParentName());

    if (img != null) {
        ImageView indicator = (ImageView) img;
        if (getChildrenCount(groupPosition) == 0) {
            indicator.setVisibility(View.INVISIBLE);
        } else {
            indicator.setVisibility(View.VISIBLE);
            int stateSetIndex = (isExpanded ? 1 : 0);
            Drawable drawable = indicator.getDrawable();
            drawable.setState(GROUP_STATE_SETS[stateSetIndex]);
        }
    }

    return convertView;
}

public boolean hasStableIds() {
    return true;
}

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

@Override
public int getChildrenCount(int groupPosition) {
    // TODO Auto-generated method stub
    return coverage_parent_list.get(groupPosition).getChildValues().size();
}

@Override
public Object getGroup(int groupPosition) {
    // TODO Auto-generated method stub

    return coverage_parent_list.get(groupPosition);
}

@Override
public int getGroupCount() {
    // TODO Auto-generated method stub
    return coverage_parent_list.size();
}
公共类ExpandListAdapter扩展了BaseExpandableListAdapter{
会话管理器会话;
共享参考sp;
编辑编辑;
私人活动语境;
ArrayList检查列表值;
阵列适配器;旋转适配器;
覆盖率ChildItemModel ChildCoverage模型;
//私有列表数组\父\标签;
字符串parentNameValue;
字符串旋转\编辑\值;
arraylistparentname;
//公共保险范围儿童最终价值模式儿童价值;
公共覆盖范围ParentModel parentValues;
ArrayList覆盖范围\子列表;
arraylistcoverage\u parent\u list;
私有静态final int[]空_STATE_SET={};
私有静态final int[]组_扩展_状态_集={android.R.attr.STATE_扩展};
私有静态final int[][]组状态集={空状态集,//0
组\扩展\状态\集//1
};
公共ExpandListAdapter(活动上下文,
ArrayList覆盖率(父列表){
this.context=上下文;
this.coverage\u parent\u list=coverage\u parent\u list;
}
公共对象getChild(int-groupPosition,int-childPosition){
coverage ParentModel parent\u cov\u model=coverage\u parent\u列表
.get(groupPosition);
ArrayList子组件列表=父组件模型
.getChildValues();
返回child_cov_list.get(childPosition);
}
公共长getChildId(int-groupPosition,int-childPosition){
返回子位置;
}
公共阵列列表getWholeCovergaes(){
返回覆盖范围\父项\列表;
}
静态类视窗夹{
TextView quickquote_child_cov_name;
EditText quickquote_child_cov_EditText;
微调器quickquote\u child\u cov\u微调器;
复选框quickquote\u child\u cov\u复选框;
}
公共视图getChildView(最终int groupPosition,最终int childPosition,
布尔值isLastChild、视图转换视图、视图组父级){
最终持票人;
childCoverageModel=(CoverageChildItemModel)getChild(groupPosition,
儿童体位);
LayoutInflater充气器=上下文。getLayoutInflater();
if(convertView==null){
convertView=充气机、充气(右布局、quickquoteoptions)子级、父级、,
假);
holder=新的ViewHolder();
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
holder.quickquote_child_cov_checkbox=(复选框)convertView
.findviewbyd(R.id.quickquote\u child\u cov\u复选框);
holder.quickquote_child_cov_name=(TextView)convertView
.findviewbyd(R.id.quickquote\u child\u cov\u name);
holder.quickquote_child_cov_edittext=(edittext)convertView
.findViewById(R.id.quickquote\u child\u cov\u edittext);
holder.quickquote_child_cov_微调器=(微调器)convertView
.findviewbyd(R.id.quickquote\u child\u cov\u spinner);
最后一个字符串s=childCoverageModel.getDisplay_name();
parentValues=新的Coverage ParentModel();
//childValues=新保险范围ChildFinalValuesModel();
holder.quickquote_child_cov_name.setText(childCoverageModel.getDisplay_name());
holder.quickquote\u child\u cov\u复选框
.setOnCheckedChangeListener(新的OnCheckedChangeListener(){
coverage ChildItemModel ChildCoverage ModelTemp=覆盖率\u父项\u列表
.get(groupPosition).getChildValues()
.get(儿童位置);
@凌驾
检查更改后的公共无效(复合按钮arg0,
布尔值(arg1){
if(holder.quickquote\u child\u cov\u checkbox.isChecked()){
覆盖率\父\列表。获取(groupPosition)
.getChildValues().get(childPosition)
.setChecked(true);
if(null!=childCoverageModelTemp.getLimitType()){
if(childCoverageModelTemp.getLimitType()
.equalsIgnoreCase(StringResource.WS_LIMIT_TYPE_INDEPENDENT)){
holder.quickquote\u child\u cov\u微调器
.setVisibility(View.VISIBLE);
holder.quickquote\u child\u cov\u edittext
.setVisibility(View.GONE);
if(null!=childCoverageModelTemp
.getLimitvalues()){
spinnerAdapter=新阵列适配器(
上下文
android.R.layout.simple\u微调器\u项,
儿童保险模式
.getLimitvalues());
spinnerAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
holder.quickquote\u child\u cov\u微调器
.设置适配器(旋转适配器);
}
}else if(儿童保险范围模型)
.getLimitType().equalsIgnoreCase(
StringResource.WS\u LIMIT\u TYPE\u USER\u INPUT){
holder.quickquote\u child\u cov\u edittext
.setVisibility(View.VISIBLE);
holder.quickquote\u child\u cov\u微调器
.setVisibility(View.GONE);
}否则{
持有