当在页面中回显之前的数据时出现了异常现象,返回数据中红框中的应该是有数据,应该选中对应的复选框,但是上边的没有历史数据,不应该被选中,逻辑是在页面中放置了三个复选框,通过数据来控制展示几个,名称和回显之前提交的数据,但是出现了没数据的也被选中的错误现象
adapter中的代码如下:
```java
package com.mxjy.ssep.adapter;
import android.content.Context;
import android.content.res.Resources;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import com.mxjy.ssep.R;
import com.mxjy.ssep.http.HttpConnectionUtil;
import com.mxjy.ssep.http.HttpConstant;
import com.mxjy.ssep.model.ApiResponse;
import com.mxjy.ssep.model.TBBaseParam;
import com.mxjy.ssep.model.TBKnowledgeCourse;
import com.mxjy.ssep.model.TRFamilySchoolInteraction;
import com.mxjy.ssep.model.TRSectionQuestionRelation;
import com.mxjy.ssep.ui.fragment.FamilySchoolInteractionFragment;
import com.mxjy.ssep.ui.fragment.SubjectPainPointDetailFragment;
import com.mxjy.ssep.util.JsonUtils;
import com.mxjy.ssep.util.LogUtils;
import com.mxjy.ssep.util.MchnUtils;
import com.mxjy.ssep.util.SharedPreferencesUtil;
import com.mxjy.ssep.util.ToastUtil;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
/**
* AI精准练
*/
public class LearningFeedbackAdapter2 extends BaseExpandableListAdapter {
private FragmentManager fManager;
private Context mContext = null;
private List<TRSectionQuestionRelation> mGroupList = null;
private TreeMap<String,String> point1IdMap;
private String course;
private String grade;
private String studentId;
private String knowledgeIdResult;
private String feedbackQuestionTypeResult;
private boolean rflag;
public LearningFeedbackAdapter2(Context context, List<TRSectionQuestionRelation> groupList, FragmentManager fManager,TreeMap<String,String> point1IdMap) {
this.mContext = context;
this.mGroupList = groupList;
this.fManager = fManager;
this.point1IdMap = point1IdMap;
}
// 获取组的个数
@Override
public int getGroupCount() {
return mGroupList.size();
}
// 获取指定组中的子元素个数
@Override
public int getChildrenCount(int groupPosition) {
//LogUtils.e("=groupPosition=",groupPosition+"");
if(mGroupList.get(groupPosition) != null && mGroupList.get(groupPosition).getSlist2() != null) {
return mGroupList.get(groupPosition).getSlist2().size();
} else {
return 0;
}
}
//获取指定组中的数据
@Override
public String getGroup(int groupPosition) {
return mGroupList.get(groupPosition).getSectionName();
}
//获取指定组中的指定子元素数据。
@Override
public String getChild(int groupPosition, int childPosition) {
// LogUtils.e("=groupPosition___childPosition=",groupPosition+"----"+childPosition);
return mGroupList.get(groupPosition).getSlist2().get(childPosition).getPoint1Name();
}
// 获取指定组的ID,这个组ID必须是唯一的
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
//获取指定组中的指定子元素ID
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
// 获取显示指定组的视图对象
//groupPosition 组位置
//isExpanded 该组是展开状态还是伸缩状态
//convertView 重用已有的视图对象
//parent 返回的视图对象始终依附于的视图组
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView,
ViewGroup parent) {
GroupHolder groupHolder = null;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.item_list_learning_feedback3, null);
groupHolder = new GroupHolder();
groupHolder.groupNameTv = (TextView) convertView.findViewById(R.id.chapterName);
convertView.setTag(groupHolder);
} else {
groupHolder = (GroupHolder) convertView.getTag();
}
groupHolder.groupNameTv = (TextView) convertView.findViewById(R.id.chapterName);
groupHolder.zdtb = (ImageView) convertView.findViewById(R.id.zdtb);
convertView.setTag(groupHolder);
if (isExpanded) {
groupHolder.zdtb.setImageResource(R.mipmap.icon_zd_up);//展开
} else {
groupHolder.zdtb.setImageResource(R.mipmap.icon_zd_down);//未展开
}
//LogUtils.e("=getChapterName=",groupPosition+"----"+ mGroupList.get(groupPosition).getChapterName());
groupHolder.groupNameTv.setText(mGroupList.get(groupPosition).getSectionName());
return convertView;
}
//获取一个视图对象,显示指定组中的指定子元素数据。
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
View convertView, ViewGroup parent) {
//LogUtils.e("=point1NAME=",groupPosition+"----"+ mGroupList.get(groupPosition).getSlist().get(childPosition).getKnowledgeTitle());
ItemHolder itemHolder = null;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.item_list_learning_feedback4, null);
itemHolder = new ItemHolder();
itemHolder.nameTv = (TextView) convertView.findViewById(R.id.sectionName);
itemHolder.itemNameTv = (TextView) convertView.findViewById(R.id.itemName);
itemHolder.filePageCount = (TextView) convertView.findViewById(R.id.filePageCount);
itemHolder.checkList = (LinearLayout)convertView.findViewById(R.id.checkList);
itemHolder.checkbox1 = (CheckBox) convertView.findViewById(R.id.checkbox1);
itemHolder.checkbox2 = (CheckBox) convertView.findViewById(R.id.checkbox2);
itemHolder.checkbox3 = (CheckBox) convertView.findViewById(R.id.checkbox3);
convertView.setTag(itemHolder);
} else {
itemHolder = (ItemHolder) convertView.getTag();
}
itemHolder.nameTv.setText(mGroupList.get(groupPosition).getSlist2().get(childPosition).getPoint1Name());
itemHolder.itemNameTv.setTag(mGroupList.get(groupPosition).getSlist2().get(childPosition).getPoint1Id());
//存储知识点和对应的反馈
point1IdMap.put(mGroupList.get(groupPosition).getSlist2().get(childPosition).getPoint1Id(),mGroupList.get(groupPosition).getSlist2().get(childPosition).getFeedbackQuestionType());
//itemHolder.filePageCount.setText(mGroupList.get(groupPosition).getSlist2().get(childPosition).getFilePageCount()+"张");
itemHolder.itemNameTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
LogUtils.e("=立即反馈=",view.getTag().toString());
LogUtils.e("=立即反馈=",point1IdMap.toString());
studentId = SharedPreferencesUtil.getString(mContext, "studentId", null);
course = mGroupList.get(groupPosition).getSlist2().get(childPosition).getCourse();
grade = mGroupList.get(groupPosition).getSlist2().get(childPosition).getGrade();
knowledgeIdResult = view.getTag().toString();
feedbackQuestionTypeResult = point1IdMap.get(view.getTag().toString());
new createLearningFeedbackInfo().execute();
}
});
List<TBBaseParam> baseParamList = mGroupList.get(groupPosition).getSlist2().get(childPosition).getBaseParamList();
String point1Id = mGroupList.get(groupPosition).getSlist2().get(childPosition).getPoint1Id();
String feedbackQuestionType = mGroupList.get(groupPosition).getSlist2().get(childPosition).getFeedbackQuestionType();
LogUtils.e("=point1Id=",point1Id);
if(baseParamList != null && baseParamList.size() > 0) {
for(int i = 0; i < baseParamList.size(); i++) {
TBBaseParam tbBaseParam = baseParamList.get(i);
if(i == 0) {
itemHolder.checkbox1.setVisibility(View.VISIBLE);
itemHolder.checkbox1.setText(tbBaseParam.getParamName());
LogUtils.e("=point1Id=",point1Id);
LogUtils.e("=feedbackQuestionType=",feedbackQuestionType);
LogUtils.e("=ParamId=",tbBaseParam.getParamId());
if(feedbackQuestionType != null && feedbackQuestionType.contains(tbBaseParam.getParamId())) {
itemHolder.checkbox1.setChecked(true);
}
itemHolder.checkbox1.setTag(point1Id+"_"+tbBaseParam.getParamId());
itemHolder.checkbox1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
String[] tag = compoundButton.getTag().toString().split("_");
String point1Id = tag[0];
String paramId = tag[1];
String feedbackQuestionType = point1IdMap.get(point1Id);
if(compoundButton.isChecked()) {
if(feedbackQuestionType != null && !"".equals(feedbackQuestionType)) {
if(!feedbackQuestionType.contains(tbBaseParam.getParamId())) {
feedbackQuestionType += paramId + "," ;
point1IdMap.put(point1Id,feedbackQuestionType);
}
} else {
feedbackQuestionType = paramId + ",";
point1IdMap.put(point1Id,feedbackQuestionType);
}
} else {
feedbackQuestionType = feedbackQuestionType.replace(paramId+",","");
point1IdMap.put(point1Id,feedbackQuestionType);
}
}
});
}
if(i == 1) {
itemHolder.checkbox2.setVisibility(View.VISIBLE);
itemHolder.checkbox2.setText(tbBaseParam.getParamName());
if(feedbackQuestionType != null && feedbackQuestionType.contains(tbBaseParam.getParamId())) {
itemHolder.checkbox2.setChecked(true);
}
itemHolder.checkbox2.setTag(point1Id+"_"+tbBaseParam.getParamId());
itemHolder.checkbox2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
String[] tag = compoundButton.getTag().toString().split("_");
String point1Id = tag[0];
String paramId = tag[1];
String feedbackQuestionType = point1IdMap.get(point1Id);
if(compoundButton.isChecked()) {
if(feedbackQuestionType != null && !"".equals(feedbackQuestionType)) {
if(!feedbackQuestionType.contains(tbBaseParam.getParamId())) {
feedbackQuestionType += paramId + "," ;
point1IdMap.put(point1Id,feedbackQuestionType);
}
} else {
feedbackQuestionType = paramId + ",";
point1IdMap.put(point1Id,feedbackQuestionType);
}
} else {
feedbackQuestionType = feedbackQuestionType.replace(paramId+",","");
point1IdMap.put(point1Id,feedbackQuestionType);
}
}
});
}
if(i == 2) {
itemHolder.checkbox3.setVisibility(View.VISIBLE);
itemHolder.checkbox3.setText(tbBaseParam.getParamName());
itemHolder.checkbox3.setTag(point1Id+"_"+tbBaseParam.getParamId());
if(feedbackQuestionType != null && feedbackQuestionType.contains(tbBaseParam.getParamId())) {
itemHolder.checkbox3.setChecked(true);
}
itemHolder.checkbox3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
String[] tag = compoundButton.getTag().toString().split("_");
String point1Id = tag[0];
String paramId = tag[1];
String feedbackQuestionType = point1IdMap.get(point1Id);
if(compoundButton.isChecked()) {
if(feedbackQuestionType != null && !"".equals(feedbackQuestionType)) {
if(!feedbackQuestionType.contains(tbBaseParam.getParamId())) {
feedbackQuestionType += paramId + "," ;
point1IdMap.put(point1Id,feedbackQuestionType);
}
} else {
feedbackQuestionType = paramId + ",";
point1IdMap.put(point1Id,feedbackQuestionType);
}
} else {
feedbackQuestionType = feedbackQuestionType.replace(paramId+",","");
point1IdMap.put(point1Id,feedbackQuestionType);
}
}
});
}
}
}
return convertView;
}
// 组和子元素是否持有稳定的ID,也就是底层数据的改变不会影响到它们。
@Override
public boolean hasStableIds() {
return true;
}
//是否选中指定位置上的子元素。
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
//LogUtils.e("=选中位置=",groupPosition+"----"+childPosition+"---------"+ mGroupList.get(groupPosition).getSlist().get(childPosition).getKnowledgeTitle());
return true;
}
class GroupHolder {
public TextView groupNameTv;
private ImageView zdtb;
}
class ItemHolder {
public TextView fenge;
public TextView nameTv;
public TextView itemNameTv;
public TextView filePageCount;
public LinearLayout checkList;
public CheckBox checkbox1;
public CheckBox checkbox2;
public CheckBox checkbox3;
}
class createLearningFeedbackInfo extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
/*mProDialog.setMessage(getResources().getString(R.string.load_msg));
mProDialog.show();*/
}
@Override
protected String doInBackground(String... strings) {
String url = HttpConstant.createLearningFeedbackInfo;
String postString = "course="+course+"&grade="+grade+"&studentId="+studentId+"&knowledgeId="+knowledgeIdResult+"&feedbackQuestionType="+feedbackQuestionTypeResult;
LogUtils.e("postString:" , postString);
/*TRFamilySchoolInteraction message = new TRFamilySchoolInteraction();
message.setUserId1(studentId);
message.setMessageContent(replyContent);
String postString = JsonUtils.javaBeanToJson(message);*/
String json = HttpConnectionUtil.AccessUrlGET(mContext,url+"?"+postString);
LogUtils.e("json:" , json);
return json;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
/*if (mProDialog != null && mProDialog.isShowing()) {
mProDialog.cancel();
}*/
if (result != null && !result.equals("")) {
ApiResponse<TRFamilySchoolInteraction> info = JsonUtils.jsonToJavaBean(result, ApiResponse.class);
if (info == null) {
ToastUtil.showShort(mContext, R.string.getData_fail);
return;
}
if (info != null && info.getCode() != null && info.getCode().equals("10000")) {
}
} else {
ToastUtil.showShort(mContext, R.string.net_notConnectedHint);
}
}
}
}
```