项目中要做一个考题的问卷,网上博客完整、又漂亮写出来的比较少。
- 灰常感谢这个朋友给的思路,参考了:http://blog.csdn.net/jing110fei/article/details/46618229
- 上效果图
里面的注释已经很详细了,不做过多解析了
有点麻烦的就是,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<Answer> the_answer_list;
// 问题列表
private ArrayList<Quesition> the_quesition_list;
// 问题所在的View
private View que_view;
// 答案所在的View
private View ans_view;
private LayoutInflater xInflater;
private Page page;
// 下面这两个list是为了实现点击的时候改变图片,因为单选多选时情况不一样,为了方便控制
// 存每个问题下的TextView
private ArrayList<ArrayList<TextView>> textlist = new ArrayList<ArrayList<TextView>>();
// 存每个答案的TextView
private ArrayList<TextView> 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<Quesition> quesitionsList = null;
try {
quesitionsList = new ArrayList<>();//问题列表
JSONObject resultJson = new JSONObject(resultJosn);
JSONArray arrayJson = resultJson.optJSONArray("data");
for (int i=0;i<arrayJson.length();i++){
JSONObject subObject = arrayJson.getJSONObject(i);
ArrayList<Answer> answers = new ArrayList<>();