很久没写东西了,今天来总结下有关android调查问卷的需求实现。

转载请加地址:http://blog.csdn.net/jing110fei/article/details/46618229

先上效果图



个人分析,最好是用动态布局加载来实现,好了,说思路,将这整体分为3块


最外面这个布局里面,根据第二层问题的数量来动态生成布局,加入在第一层布局里面,

然后再根据问题下答案的数量来动态生成布局,加入第二层布局里面,思路这么透彻,想想还有些小激动呢。

先建造三个实体类

public class Page {//问卷idprivate 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 {//题目idprivate String quesitionId;//单选多选标识private String type;//题目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 {//答案idprivate 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;}}
建造这三个实体类的目的是为了在做demo的时候直接通过假数据来尽可能的贴近项目,使demo完成后能尽快的移植进项目。

下面来看看布局,总工用到了3个布局。

首先是activity_main.xml

                                                                                                    
id为lly_test的布局就是最终要加入的目的布局

然后是quesition_layout.xml

<?xml version="1.0" encoding="utf-8"?>                    

//然后是answer_layout.xml

<?xml version="1.0" encoding="utf-8"?>                        

然后是主要代码,长久不写博客,有点生疏了,大家顺着思路来看,注释也差不多详尽,如果有不明白的再讨论

public class MainActivity extends Activity {private LinearLayout test_layout;private Page the_page;//答案列表private ArrayList the_answer_list;//问题列表private ArrayList the_quesition_list;//问题所在的Viewprivate View que_view;//答案所在的Viewprivate View ans_view;private LayoutInflater xInflater;private Page page;//下面这两个list是为了实现点击的时候改变图片,因为单选多选时情况不一样,为了方便控制//存每个问题下的imageviewprivate ArrayList> imglist=new ArrayList>();//存每个答案的imageviewprivate ArrayList imglist2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);xInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);//假数据initDate();//提交按钮Button button=(Button)findViewById(R.id.submit);button.setOnClickListener(new submitOnClickListener(page));}private void initDate() {//假数据// TODO Auto-generated method stubAnswer a_one=new Answer();a_one.setAnswerId("0");a_one.setAnswer_content("男");a_one.setAns_state(0);Answer a_two=new Answer();a_two.setAnswerId("1");a_two.setAnswer_content("女");a_two.setAns_state(0);Answer a_three=new Answer();a_three.setAnswerId("3");a_three.setAnswer_content("是");a_three.setAns_state(0);Answer a_four=new Answer();a_four.setAnswerId("4");a_four.setAnswer_content("不是");a_four.setAns_state(0);Answer a_three1=new Answer();a_three1.setAnswerId("3");a_three1.setAnswer_content("是");a_three1.setAns_state(0);Answer a_four1=new Answer();a_four1.setAnswerId("4");a_four1.setAnswer_content("不是");a_four1.setAns_state(0);ArrayList answers_one=new ArrayList();answers_one.add(a_one);answers_one.add(a_two);ArrayList answers_two=new ArrayList();answers_two.add(a_one);answers_two.add(a_two);answers_two.add(a_three);answers_two.add(a_four);ArrayList answers_three=new ArrayList();answers_three.add(a_one);answers_three.add(a_two);answers_three.add(a_three);answers_three.add(a_four);answers_three.add(a_three1);answers_three.add(a_four1);Quesition q_one=new Quesition();q_one.setQuesitionId("00");q_one.setType("0");q_one.setContent("1、您的性别:");q_one.setAnswers(answers_one);q_one.setQue_state(0);Quesition q_two=new Quesition();q_two.setQuesitionId("01");q_two.setType("1");q_two.setContent("2、您是党员吗?");q_two.setAnswers(answers_two);q_two.setQue_state(0);Quesition q_three=new Quesition();q_three.setQuesitionId("03");q_three.setType("1");q_three.setContent("3、您是dsfsdfsd吗?");q_three.setAnswers(answers_three);q_three.setQue_state(0);ArrayList quesitions=new ArrayList();quesitions.add(q_one);quesitions.add(q_two);quesitions.add(q_three);page=new Page();page.setPageId("000");page.setStatus("0");page.setTitle("第一次调查问卷");page.setQuesitions(quesitions);//加载布局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();for(int j=0;j

人不能懒惰啊,以后要多多总结,欢迎大家讨论。






更多相关文章

  1. 含有过滤功能的android流式布局
  2. Android性能优化---布局优化
  3. Android(安卓)ViewPager的简单使用
  4. 《Android(安卓)Dev Guide》系列教程9:用户界面之声明布局
  5. Android(安卓)最新面试题
  6. Android的布局
  7. Android(安卓)抽象布局include merge Viewstub
  8. Android仿“知乎”隐藏标题栏、回答详情页动画效果
  9. Android(安卓)Fragment使用

随机推荐

  1. android2.3中webkit在webview的一个更新
  2. android 中findViewById()为null的可能原
  3. Android(安卓)PreferenceActivity浅析
  4. 自己编译 tess-two几个库文件用于android
  5. android 退出 activity
  6. android在代码中设置margin属性
  7. Android蓝牙耳机录音
  8. Android(安卓)sdk 安装后 找不到adb.exe
  9. 一培训机构设计的学习android课程内容:供
  10. 01-android快速入门