android实现动态生成答题卡页面(单选 判断 多选题)

实现效果图

android实现动态生成答题卡页面(单选 判断 多选题)_第1张图片

实现思路:1:listView+动态添加布局

                  2:根据题目类型控制是否能多选或单选

实现主要代码:

//listView adapter里面代码实现 

layout布局 父布局



    

        

        
    
  
   //动态添加的父布局
    

    
    

 

item_options 子布局


    


    

    
    

 

//动态加布局
holder.llContaint.removeAllViews();
for (int j = 0; j < mOptionListBeanList.size(); j++) {
    clickPotion = j;
    //item布局-----
    View choseView = LayoutInflater.from(context).inflate(R.layout.item_options, null);
    final LinearLayout llRoot = choseView.findViewById(R.id.llRoot);
    llRoot.setTag(j);
    ImageView ivType = choseView.findViewById(R.id.iv_type);
    TextView tvOptionName = choseView.findViewById(R.id.tv_optionName);
    if (!TextUtils.isEmpty(questionType)) {
        if ("1".equals(questionType)) {
            //单选
            ivType.setBackgroundResource(R.mipmap.single);
        } else if ("2".equals(questionType)) {
            //多选
            ivType.setBackgroundResource(R.mipmap.check);
        } else if ("3".equals(questionType)) {
            //判断题
            ivType.setBackgroundResource(R.mipmap.single);
        }
    }

    tvOptionName.setText(mOptionListBeanList.get(j).getOptionName());
    final String optionId = mOptionListBeanList.get(j).getOptionId();
    Boolean check = mOptionListBeanList.get(j).isCheck();
    if (check) {
        if ("1".equals(questionType)) {
            //单选
            ivType.setBackgroundResource(R.mipmap.single_in);
        } else if ("2".equals(questionType)) {
            //多选
            ivType.setBackgroundResource(R.mipmap.check_in);
        } else if ("3".equals(questionType)) {
            //判断题
            ivType.setBackgroundResource(R.mipmap.single_in);
        }
    }

    llRoot.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            // ToastUtil.ShowToast_short(context,"点击点击");
            //****写个回调来刷新选中效果
            mItfOptionCallBack.chooseOption((Integer) llRoot.getTag(), questionType,
                    position);
        }
    });

    holder.llContaint.addView(choseView);

////////////////////////////////////////

/////Activity页面实现回调数据刷新,以及是否能多选或单选控制

mPaperQueryAdapter.setItfOptionCallBack(new PaperQueryAdapter
                .itfOptionCallBack() {
            @Override
            public void chooseOption(int position, String questionType, int
                    parentposition) {
                // 当前点击的选项
                // ToastUtil.ShowToast_short(mContext,
                // "当前点击的选项:"+position+"----"+parentposition);
                List mOptionListBeanList = dataList.get
                        (parentposition).getOptionS();
                PaperQueryRespBean.DatasBean.QuestionBean.OptionSBean
                        optionListBean = mOptionListBeanList.get(position);

                if ("1".equals(questionType)) {
                    //单选
                    for (int j = 0; j < mOptionListBeanList.size(); j++) {
                        if (optionListBean.getOptionId().equals
                                (mOptionListBeanList.get(j).getOptionId())) {
                            if (!optionListBean.isCheck()) {
                                optionListBean.setCheck(!optionListBean.isCheck());
                            }
                        } else {
                            mOptionListBeanList.get(j).setCheck(false);
                        }
                    }

                } else if ("2".equals(questionType)) {
                    //多选
                    optionListBean.setCheck(!optionListBean.isCheck());
                } else if ("3".equals(questionType)) {
                    //判断题
                    for (int j = 0; j < mOptionListBeanList.size(); j++) {
                        if (optionListBean.getOptionId().equals
                                (mOptionListBeanList.get(j).getOptionId())) {
                            if (!optionListBean.isCheck()) {
                                optionListBean.setCheck(!optionListBean.isCheck());
                            }
                        } else {
                            mOptionListBeanList.get(j).setCheck(false);
                        }
                    }
                }
                mPaperQueryAdapter.notifyDataSetChanged();
            }
        });

最后提交数据时,直接拿取数据源的数据进行装载就好了,这里就不贴出来了,然后项目里面还有答题时间控制,直接线程倒计时就行了,如需源码,留言到时候我抽出来发一下。。

你可能感兴趣的:(android实现动态生成答题卡页面(单选 判断 多选题))