有点麻烦的就是,1:要拿对每个数据,注意里面的i j z等角标; 2:将每个答案拼好成一个json数据,多个答案就会麻烦点。
Activity代码
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.example.administrator.testdemo.model.Answer;
import com.example.administrator.testdemo.model.Page;
import com.example.administrator.testdemo.model.Quesition;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
public class MainActivity extends Activity {
// 数据源 假数据
private String resultJosn = "{\"result\":\"1\",\"type\":\"1\",\"data\":[{\"type\":\"3\",\"eid\":\"11\",\"problem\":\"1、 什么样的团队更容易获得成功?\",\"trueanswer\":\"B\",\"optionData\":[{\"option\":\"团结\",\"isChecked\":\"0\"},{\"option\":\"精英\",\"isChecked\":\"0\"},{\"option\":\"聪明\",\"isChecked\":\"0\"},{\"option\":\"领导\",\"isChecked\":\"0\"}]},{\"type\":\"3\",\"eid\":\"12\",\"problem\":\"2、 学习态度\",\"trueanswer\":\"C\",\"optionData\":[{\"option\":\"好\",\"isChecked\":\"0\"},{\"option\":\"一般\",\"isChecked\":\"0\"},{\"option\":\"很好\",\"isChecked\":\"0\"},{\"option\":\"差\",\"isChecked\":\"0\"}]},{\"type\":\"2\",\"eid\":\"13\",\"problem\":\"3、 这件事真的是对的吗\",\"trueanswer\":\"A\",\"optionData\":[{\"option\":\"正确\",\"isChecked\":\"0\"},{\"option\":\"错误\",\"isChecked\":\"0\"}]},{\"type\":\"2\",\"eid\":\"14\",\"problem\":\"4、 这个道理真的对吗\",\"trueanswer\":\"B\",\"optionData\":[{\"option\":\"正确\",\"isChecked\":\"0\"},{\"option\":\"错误\",\"isChecked\":\"0\"}]},{\"type\":\"1\",\"eid\":\"15\",\"problem\":\"5、 老师姓什么?\",\"trueanswer\":\"D\",\"optionData\":[{\"option\":\"赵\",\"isChecked\":\"0\"},{\"option\":\"钱\",\"isChecked\":\"0\"},{\"option\":\"孙\",\"isChecked\":\"0\"},{\"option\":\"李\",\"isChecked\":\"0\"}]},{\"type\":\"1\",\"eid\":\"16\",\"problem\":\"6、 这个要多上钱\",\"trueanswer\":\"C\",\"optionData\":[{\"option\":\"100\",\"isChecked\":\"0\"},{\"option\":\"200\",\"isChecked\":\"0\"},{\"option\":\"300\",\"isChecked\":\"0\"},{\"option\":\"400\",\"isChecked\":\"0\"}]},{\"type\":\"2\",\"eid\":\"17\",\"problem\":\"7、 我不用学这个课程也能成功\",\"trueanswer\":\"B\",\"optionData\":[{\"option\":\"正确\",\"isChecked\":\"0\"},{\"option\":\"错误\",\"isChecked\":\"0\"}]},{\"type\":\"2\",\"eid\":\"18\",\"problem\":\"8、 学习人数已经由300人了\",\"trueanswer\":\"A\",\"optionData\":[{\"option\":\"正确\",\"isChecked\":\"0\"},{\"option\":\"错误\",\"isChecked\":\"0\"}]},{\"type\":\"1\",\"eid\":\"19\",\"problem\":\"9、 该课程要上多久\",\"trueanswer\":\"A\",\"optionData\":[{\"option\":\"10分钟\",\"isChecked\":\"0\"},{\"option\":\"20分钟\",\"isChecked\":\"0\"},{\"option\":\"30分钟\",\"isChecked\":\"0\"},{\"option\":\"40分钟\",\"isChecked\":\"0\"}]},{\"type\":\"2\",\"eid\":\"20\",\"problem\":\"10、 学过这个课程的都成功了\",\"trueanswer\":\"B\",\"optionData\":[{\"option\":\"正确\",\"isChecked\":\"0\"},{\"option\":\"错误\",\"isChecked\":\"0\"}]}]}\n";
// private String resultJosn = "{\"result\":\"1\",\"type\":\"1\",\"data\":[{\"type\":\"2\",\"eid\":\"6\",\"problem\":\"1、 真不拿\",\"trueanswer\":\"A\",\"optionData\":[{\"option\":\"正确\",\"isChecked\":\"0\"},{\"option\":\"错误\",\"isChecked\":\"0\"}]},{\"type\":\"2\",\"eid\":\"7\",\"problem\":\"2、 这个怎么做\",\"trueanswer\":\"A\",\"optionData\":[{\"option\":\"1\",\"isChecked\":\"1\"},{\"option\":\"2\",\"isChecked\":\"0\"},{\"option\":\"3\",\"isChecked\":\"0\"},{\"option\":\"4\",\"isChecked\":\"0\"}]},{\"type\":\"2\",\"eid\":\"8\",\"problem\":\"3、 wgergwe\",\"trueanswer\":\"B\",\"optionData\":[{\"option\":\"正确\",\"isChecked\":\"0\"},{\"option\":\"错误\",\"isChecked\":\"0\"}]},{\"type\":\"3\",\"eid\":\"9\",\"problem\":\"4、 szdfasdf\",\"trueanswer\":\"C\",\"optionData\":[{\"option\":\"112\",\"isChecked\":\"0\"},{\"option\":\"22\",\"isChecked\":\"0\"},{\"option\":\"23\",\"isChecked\":\"0\"},{\"option\":\"43\",\"isChecked\":\"1\"}]},{\"type\":\"2\",\"eid\":\"10\",\"problem\":\"5、 rqwerqw\",\"trueanswer\":\"B\",\"optionData\":[{\"option\":\"正确\",\"isChecked\":\"0\"},{\"option\":\"错误\",\"isChecked\":\"0\"}]}]}";
private LinearLayout test_layout;
private Page the_page;
// 答案列表
private ArrayList the_answer_list;
/ / 问题列表
private ArrayList the_quesition_list;
/ / 问题所在的View
private View que_view;
// 答案所在的View
private View ans_view;
private LayoutInflater xInflater;
private Page page;
// 下面这两个list是为了实现点击的时候改变图片,因为单选多选时情况不一样,为了方便控制
// 存每个问题下的TextView
private ArrayList> textlist = new ArrayList>();
/ / 存每个答案的TextView
private ArrayList textlist2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
xInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
/ / 初始化数据
initDate();
// 提交按钮
TextView button = (TextView) findViewById(R.id.tv_commit);
button.setOnClickListener(new submitOnClickListener(page));
}
private void initDate() {
ArrayList quesitionsList = null;
try {
quesitionsList = new ArrayList<>();/ /问题列表
JSONObject resultJson = new JSONObject(resultJosn);
JSONArray arrayJson = resultJson.optJSONArray("data");
for (int i=0;i answers = new ArrayList<>();
JSONArray arrayAnswerJson = subObject.optJSONArray("optionData");/ /问题的答案
for (int j=0; j< arrayAnswerJson.length(); j++) {
JSONObject answerObject = arrayAnswerJson.getJSONObject(j);
Answer a_answer = new Answer();
a_answer.setAnswerId(""+j);
a_answer.setAnswer_content(answerObject.getString("option"));
a_answer.setAns_state(Integer.parseInt(answerObject.getString("isChecked")));
answers.add(a_answer);
}
Quesition q_quesition = new Quesition();
q_quesition.setQuesitionId(subObject.getString("eid"));//问题的id
q_quesition.setType(subObject.getString("type"));//类型,1判断 2单选 3不定项
q_quesition.setContent(subObject.getString("problem"));//问题
q_quesition.setAnswers(answers);
q_quesition.setQue_state(0);
quesitionsList.add(q_quesition);
}
} catch (JSONException e) {
e.printStackTrace();
}
page = new Page();
page.setPageId("1");
page.setStatus("0");
page.setTitle("精英问卷");
page.setQuesitions(quesitionsList);
// 加载布局
initView(page);
}
private void initView(Page page) {
// TODO Auto-generated method stub
// 这是要把问题的动态布局加入的布局
test_layout = (LinearLayout) findViewById(R.id.lly_test);
TextView page_txt = (TextView) findViewById(R.id.txt_title);
page_txt.setText(page.getTitle());
// 获得问题即第二层的数据
the_quesition_list = page.getQuesitions();
// 根据第二层问题的多少,来动态加载布局
for (int i = 0; i < the_quesition_list.size(); i++) {
que_view = xInflater.inflate(R.layout.quesition_layout, null);
ImageView iv_type = (ImageView) que_view.findViewById(R.id.iv_type);
TextView txt_que = (TextView) que_view.findViewById(R.id.txt_question_item);
// 这是第三层布局要加入的地方
LinearLayout add_layout = (LinearLayout) que_view.findViewById(R.id.lly_answer);
View v_line = (View) que_view.findViewById(R.id.v_line);
if(i == 0){//第一道题目的分隔条不用显示
v_line.setVisibility(View.GONE);
}
//类型:1选择题;2判断题 3不定项
if (the_quesition_list.get(i).getType().equals("1")) {
iv_type.setImageResource(R.mipmap.single_menu);
} else if (the_quesition_list.get(i).getType().equals("2")){
iv_type.setImageResource(R.mipmap.judge_menu);
} else if (the_quesition_list.get(i).getType().equals("3")){
iv_type.setImageResource(R.mipmap.more_menu);
}
txt_que.setText(the_quesition_list.get(i).getContent());//设置问题题目
// 获得答案即第三层数据
the_answer_list = the_quesition_list.get(i).getAnswers();
textlist2 = new ArrayList<>();
for (int j = 0; j < the_answer_list.size(); j++) {
ans_view = xInflater.inflate(R.layout.answer_layout, null);
TextView txt_ans = (TextView) ans_view.findViewById(R.id.txt_answer_item);
TextView tv_menu = (TextView) ans_view.findViewById(R.id.tv_menu);
//自己手动为每个问题的选项加上相应的ABCD...
if (j==0){
tv_menu.setText("A");
}else if (j==1){
tv_menu.setText("B");
}else if (j==2){
tv_menu.setText("C");
}else if (j==3){
tv_menu.setText("D");
}else if (j==4){
tv_menu.setText("E");
}else if (j==5){
tv_menu.setText("F");
}else if (j==6){
tv_menu.setText("G");
}
// 判断哪个答案已选
if (the_answer_list.get(j).getAns_state() == 1) {
// Toast.makeText(getApplicationContext(),"1",Toast.LENGTH_SHORT).show();
the_quesition_list.get(i).setQue_state(1);
tv_menu.setBackgroundDrawable(getResources().getDrawable(R.drawable.shape_red));
tv_menu.setTextColor(getResources().getColor(R.color.colorWhite));
} else {
// Toast.makeText(getApplicationContext(),"0",Toast.LENGTH_SHORT).show();
tv_menu.setBackgroundDrawable(getResources().getDrawable(R.drawable.shape_white));
tv_menu.setTextColor(getResources().getColor(R.color.colorblack));
}
textlist2.add(tv_menu);
txt_ans.setText(the_answer_list.get(j).getAnswer_content());
LinearLayout lly_answer_size = (LinearLayout) ans_view.findViewById(R.id.lly_answer_size);
if (j%2!=0){//为了美观了,将答案的背景隔开一下
lly_answer_size.setBackgroundColor(getResources().getColor(R.color.colorWhite));
}
//设置点击事件
lly_answer_size .setOnClickListener(new answerItemOnClickListener(i, j, the_answer_list, txt_ans));
add_layout.addView(ans_view);
}
textlist.add(textlist2);
test_layout.addView(que_view);//将生成的问题都添加到一个布局文件中
}
}
/**
* 试卷各个选项的点击事件
*/
class answerItemOnClickListener implements View.OnClickListener {
private int i;
private int j;
private TextView txt;
private ArrayList the_answer_lists;
public answerItemOnClickListener(int i, int j, ArrayList the_answer_list, TextView text) {
this.i = i;
this.j = j;
this.the_answer_lists = the_answer_list;
this.txt = text;
}
/ / 实现点击选项后改变选中状态以及对应图片
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
// 判断当前问题是单选还是多选
if (the_quesition_list.get(i).getType().equals("3")) {//1选择题;2判断题 3不定项
for(int z=0;z/ return;
}else{
the_quesition_list.get(i).setQue_state(0);
}
}
if (the_answer_lists.get(j).getAns_state() == 0) {
// Toast.makeText(getApplication(), "0", Toast.LENGTH_SHORT).show();
textlist.get(i).get(j).setBackgroundDrawable(getResources().getDrawable(R.drawable.shape_red));
textlist.get(i).get(j).setTextColor(getResources().getColor(R.color.colorWhite));
the_answer_lists.get(j).setAns_state(1);//注意一下这些相应的角标是用i 、j还是z。
the_quesition_list.get(i).setQue_state(1);
} else {
// Toast.makeText(getApplication(), "1", Toast.LENGTH_SHORT).show();
textlist.get(i).get(j).setBackgroundDrawable(getResources().getDrawable(R.drawable.shape_white));
textlist.get(i).get(j).setTextColor(getResources().getColor(R.color.colorblack));
the_answer_lists.get(j).setAns_state(0);
the_quesition_list.get(i).setQue_state(0);
}
} else {// 单选
for (int z = 0; z < the_answer_lists.size(); z++) {
if (z == j) {
// Toast.makeText(getApplication(), "3", Toast.LENGTH_SHORT).show();
// 如果当前未被选中
textlist.get(i).get(j).setBackgroundDrawable(getResources().getDrawable(R.drawable.shape_red));
textlist.get(i).get(j).setTextColor(getResources().getColor(R.color.colorWhite));
the_answer_lists.get(z).setAns_state(1);
the_quesition_list.get(i).setQue_state(1);
} else {
// Toast.makeText(getApplication(), "4", Toast.LENGTH_SHORT).show();
the_answer_lists.get(z).setAns_state(0);
the_quesition_list.get(i).setQue_state(1);
textlist.get(i).get(z).setBackgroundDrawable(getResources().getDrawable(R.drawable.shape_white));
textlist.get(i).get(z).setTextColor(getResources().getColor(R.color.colorblack));
}
}
}
}
}
/**
* 提交按钮事件处理
*/
class submitOnClickListener implements View.OnClickListener {
private Page page;
public submitOnClickListener(Page page) {
this.page = page;
}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
// 判断是否答完题
boolean isState = true;
// 最终要的json数组
JSONArray jsonArray = new JSONArray();
// 点击提交的时候,先判断状态,如果有未答完的就提示,如果没有再把每条答案提交(包含问卷ID 问题ID 及答案ID)
// 注:不用管是否是一个问题的答案,就以答案的个数为准来提交上述格式的数据
for (int i = 0; i < the_quesition_list.size(); i++) {
the_answer_list = the_quesition_list.get(i).getAnswers();
// 判断是否有题没答完
if (the_quesition_list.get(i).getQue_state() == 0) {
Toast.makeText(getApplicationContext(), "您第" + (i + 1) + "题没有答完", Toast.LENGTH_LONG).show();
jsonArray = null;
isState = false;
return;
} else {
JSONObject json = new JSONObject();
String answers2 = "";
String answers = "";
for (int j = 0; j < the_answer_list.size(); j++) {
if (the_answer_list.get(j).getAns_state() == 1) {
try {
answers2 = the_quesition_list.get(i).getQuesitionId();
if (answers.length()==0){
answers = answers +j;
}else {
answers = answers +"-"+ j;
}
//===为不定项拼接答案================================
if (answers.contains("0")) {
answers = answers.replace("0", "A");
}
if (answers.contains("1")) {
answers = answers.replace("1", "B");
}
if (answers.contains("2")) {
answers = answers.replace("2", "C");
}
if (answers.contains("3")) {
answers = answers.replace("3", "D");
}
if (answers.contains("4")) {
answers = answers.replace("4", "E");
}
if (answers.contains("5")) {
answers = answers.replace("5", "F");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
try {
json.put("answer", answers);
json.put("eid", answers2);
// Toast.makeText(getApplicationContext(), json + "", Toast.LENGTH_SHORT).show();
jsonArray.put(json);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
Log.d("jsonArray-->", "" + jsonArray);
Toast.makeText(getApplicationContext(), "提交的数据:" + jsonArray, Toast.LENGTH_SHORT).show();
}
}
}
"1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorWhite"
android:orientation="vertical">
<TextView
android:id="@+id/txt_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@color/colorPrimaryDark"
android:gravity="center"
android:padding="10dp"
android:text="调查问卷"
android:textColor="@color/colorWhite"
android:textSize="18sp" />
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="@color/colorGray" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:scrollbars="none"
android:background="@color/colorLightGrey"
android:layout_weight="1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/tv_class_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:background="@color/colorWhite"
android:gravity="center_vertical"
android:paddingTop="10dp"
android:paddingLeft="15dp"
android:text="闯关吧,少年"
android:textColor="@color/colorblack"
android:textSize="17sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:paddingTop="5dp"
android:paddingLeft="15dp"
android:paddingBottom="10dp"
android:background="@android:color/white"
android:gravity="center_vertical"
android:text="(共10题,总分100分)"
android:textColor="@color/m_silver"
android:textSize="12sp" />
<LinearLayout
android:id="@+id/lly_test"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
"/>
"
android:layout_height=" 0.3dp"
android:background="@color/m_silver" />
"
android:layout_width=" 192dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:layout_marginBottom="15dp"
android:layout_marginTop="15dp"
android:background="@color/colorRed"
android:gravity="center"
android:padding="10dp"
android:text="提交"
android:textColor="@android:color/white"
android:textSize="18sp" />
-------------------------------------------
- 每个问题的布局文件:quesition_layout.xml
1.0" encoding="utf-8"?>
http: //schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white2"
android:orientation="vertical">
"
android:layout_width=" match_parent"
android:layout_height="35dp"
android:background="@color/white2"/>
"
android:layout_height=" 0.5dp"
android:background="@color/m_silver"/>
"
android:layout_height=" wrap_content"
android:paddingTop="15dp"
android:paddingBottom="20dp"
android:background="@color/colorWhite"
android:gravity="center_vertical"
android:orientation="horizontal">
"
android:layout_width=" 47dp"
android:layout_height="17dp"
android:scaleType="fitXY"
android:src="@mipmap/single_menu" />
"
android:layout_width=" match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:text="题目"
android:textColor="@color/m_charcoal_grey"
android:textSize="17sp" />
"
android:layout_width=" match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"/>
"1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="38dp"
android:orientation="vertical">
<LinearLayout
android:id="@+id/lly_answer_size"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:paddingLeft="40dp"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_menu"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_gravity="center_vertical"
android:gravity="center"
android:background="@drawable/shape_white"
android:textColor="@color/m_item_text"
android:layout_margin="10dp"
android:padding="1dp"
android:text="A"
android:textSize="12sp" />
<TextView
android:id="@+id/txt_answer_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:textColor="@color/m_item_text"
android:textSize="15sp" />
</LinearLayout>
LinearLayout>
"1.0" encoding="utf-8"?>
"colorPrimary">#3F51B5
"colorPrimaryDark">#303F9F
"colorAccent">#FF4081
"colorWhite">#ffffff
"white2">#f5f3f3
"colorRed">#ff0000
"colorGray">#666666
"colorblack">#000000
"colorLightGrey">#eeeeee
"colorTransparent">#00000000
"m_charcoal_grey">#323233
"m_steel">#7d7d80
"m_silver">#c8c8cc
"m_pale_grey">#f2f2f7
"m_warm_grey">#777777
"m_item_text">#535353
</resources>
/**
* 试卷
*/
public class Page {
//问卷id
private String pageId;
//问卷状态
private String status;
//问卷主题
private String title;
//题目
private ArrayList quesitions;
public ArrayList getQuesitions() {
return quesitions;
}
public void setQuesitions(ArrayList quesitions) {
this.quesitions = quesitions;
}
public String getPageId() {
return pageId;
}
public void setPageId(String pageId) {
this.pageId = pageId;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
/**
* 问题类
*/
public class Quesition {
//题目id
private String quesitionId;
//单选多选标识
private String type;//0 单选 1 多选
//题目
private String content;
//选项
private ArrayList answers;
/ /是否解答
private int que_state;
public int getQue_state() {
return que_state;
}
public void setQue_state(int que_state) {
this.que_state = que_state;
}
public String getQuesitionId() {
return quesitionId;
}
public void setQuesitionId(String quesitionId) {
this.quesitionId = quesitionId;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public ArrayList getAnswers() {
return answers;
}
public void setAnswers(ArrayList answers) {
this.answers = answers;
}
}
/**
* 答案类
*/
public class Answer {
//答案id
private String answerId;
//答案主体
private String answer_content;
//答案是否被解答
private int ans_state;
public int getAns_state() {
return ans_state;
}
public void setAns_state(int ans_state) {
this.ans_state = ans_state;
}
public String getAnswerId() {
return answerId;
}
public void setAnswerId(String answerId) {
this.answerId = answerId;
}
public String getAnswer_content() {
return answer_content;
}
public void setAnswer_content(String answer_content) {
this.answer_content = answer_content;
}
}
"1.0" encoding="UTF-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"
android:useLevel="false" >
android:color="@color/colorRed" />
android:color="@color/colorRed" />
android:width="1dp"
android:color="@color/colorRed" />
</shape>
"1.0" encoding="UTF-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"
android:useLevel="false" >
android:color="@color/colorWhite" />
android:width="1dp"
android:color="@color/colorLightGrey" />
</shape>
以上就是全部代码。
源码下载地址:http://download.csdn.net/detail/qq_32519693/9924085
不过这样的做法,从性能上来说是不太好。因为每次都是将每个问题的信息动态地添加进去,比较消耗性能。由于现在项目时间紧任务中暂时这样来,如果其他朋友还有更好实现方式,请分享一下。