欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android实现一个简单的单选题

程序员文章站 2022-05-31 11:51:02
...

下载地址:http://download.csdn.net/detail/happyghh/9896264

一个简单的实现单选题的APP ,主要的实现逻辑和问题都在代码中详细注释,这里做个总结。

最近在看《Android权威编程指南》,于是就想着,按照书中的例子,自己变换一下,做一个考试中经常出现的,单项选择题的功能,最后给出答案和总结。貌似一个非常简单的功能,自己在实现起来还是遇到了不少问题,所以说,Talk is cheap,show me the code。

总体设计思路:
Android实现一个简单的单选题
主布局很简单,一个按钮点击后跳转到试题测试页面,进行选择后,可在结果页面查看相应的结果,整体的想法如上图,主要涉及的内容包括:

1)Intent传值
2)RadioButton的使用
3)RecyclerView的使用

具体的实现:

测试试题内容:

/**
 *更新测试问题
 */

private void updateQuestion() {

        Log.d(TAG,"Updating question text for question and option#" + currentIndex,new Exception());
        String question = questionArr[currentIndex].getQuestion();//根据索引获取数组中的问题 
        tvQue.setText(question);
        String option1 = questionArr[currentIndex].getOption1();
        rbOption1.setText(option1);
        String option2 = questionArr[currentIndex].getOption2();
        rbOption2.setText(option2);
        String option3 = questionArr[currentIndex].getOption3();
        rbOption3.setText(option3);
        String option4 = questionArr[currentIndex].getOption4();
        rbOption4.setText(option4);

        rgOption.clearCheck(); // 清除选中状态
        flag = false;
        //如果是测试内容,设置答案不可见
        tvAnswer.setVisibility(View.GONE);
        tvAnswer.setText(getString(R.string.answer) + questionArr[currentIndex].getAnswer() + explain[currentIndex]);

        if (currentIndex == 0){
            tvPre.setText(R.string.no);
            tvPre.setEnabled(false);
        } else{
            tvPre.setText(R.string.previous);
            tvPre.setEnabled(true);
        }

        tvNext.setText(R.string.next);

    }

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK){
            currentIndex = data.getIntExtra("position",0);
            updateQuestion();
        }
        if (requestCode == REQUEST_CODE_RESULT){
            tvAnswer.setVisibility(View.VISIBLE);

        }

    }

结果内容:

    ResultGridAdapter adapter = new ResultGridAdapter(this, listNum, flagSelected, new OnRecyclerItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
//              Toast.makeText(ResultActivity.this,"test",Toast.LENGTH_SHORT).show();
                Intent intent = new Intent();
                intent.putExtra("position",position);
                setResult(RESULT_OK, intent);
                finish();
            }
        });

Android实现一个简单的单选题
Android实现一个简单的单选题
Android实现一个简单的单选题

相关标签: android