Android实现一个简单的单选题
程序员文章站
2022-05-31 11:51:02
...
下载地址:http://download.csdn.net/detail/happyghh/9896264
一个简单的实现单选题的APP ,主要的实现逻辑和问题都在代码中详细注释,这里做个总结。
最近在看《Android权威编程指南》,于是就想着,按照书中的例子,自己变换一下,做一个考试中经常出现的,单项选择题的功能,最后给出答案和总结。貌似一个非常简单的功能,自己在实现起来还是遇到了不少问题,所以说,Talk is cheap,show me the code。
总体设计思路:
主布局很简单,一个按钮点击后跳转到试题测试页面,进行选择后,可在结果页面查看相应的结果,整体的想法如上图,主要涉及的内容包括:
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();
}
});