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