动态布局

package com.example.com.lmt;

import java.util.ArrayList;
import java.util.List;

import android.R.string;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
    List<Question> list= new ArrayList<Question>();
    List<TextView> answers=new ArrayList<TextView>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //初始化题目
        initQuestion();
        //创建根布局
        final LinearLayout linearLayout=new LinearLayout(this);
        //设置走向
        linearLayout.setOrientation(LinearLayout.VERTICAL);
        //动态添加布局
        for (int i = 0; i < list.size(); i++) {
            final int finali=i;
            final Question question=list.get(i);
            //导入布局
            View layout=View.inflate(this,R.layout.activity_main, null);
            //通过刚才导入的布局来找到组件
            TextView tvQuestion=(TextView) layout.findViewById(R.id.tv_question);
            TextView tvUserAnswer=(TextView) layout.findViewById(R.id.tv_answer);
            answers.add(tvUserAnswer);
            //给组件设置数据
            tvQuestion.setText(question.getTitle());
            //将布局加入到根布局
            linearLayout.addView(layout);
            //给当前布局设置监听器
            layout.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    //将数据带到另外一个界面进行创建
                    Intent intent=new Intent(MainActivity.this,AnswerActivity.class);
                    //所有传递的对象必须是序列化的
                    intent.putExtra("question",question);
                    //需要待结果返回,一定需要重写onActivityResult,否则无法处理返回结果
                    startActivityForResult(intent, finali);

                }
            });

        }
        Button button=new Button(this);
        button.setText("交卷");
        button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //判断所有用户答案和正确答案
                int sum=0;
                for (int i = 0; i < list.size(); i++) {
                    Question question=list.get(i);
                    if(question.getTrueAnswer().equals(question.getUserAnswer())){
                        sum+=20;
                    }

                }
                //直接toast.去掉点击事件
                Toast.makeText(MainActivity.this,"得分"+sum, Toast.LENGTH_SHORT).show();
                //将所有组件拿出来 去掉点击事件
                for (int i = 0; i <linearLayout.getChildCount(); i++) {
                    linearLayout.getChildAt(i).setOnClickListener(null);
                }
            }
        });

        //添加按钮
        linearLayout.addView(button);
        setContentView(linearLayout);
    }

    private void initQuestion() {
        // TODO Auto-generated method stub
        list.add(new Question("在这个位置时怎样使用灯光?", new String[] { "A、开启左转向灯",
                "B、开启右转向灯", "C、开启危险报警闪光灯", "D、开启前照灯" }, "A", "",
                R.drawable.pic1));

        list.add(new Question("造成交通事故后逃逸,尚不构成犯罪的一次记几分?", new String[] {
                "A、12分", "B、6分", "C、3分", "D、2分" }, "A", "", 0));

        list.add(new Question("如图所示,夜间驾驶机动车与同方向行驶的前车距离较近时,以下做法正确的是什么?",
                new String[] { "A、使用远光灯,有利于观察路面情况",
                        "B、禁止使用远光灯,避免灯光照射至前车后视镜造成前车驾驶人眩目",
                        "C、使用远光灯,有利于告知前方驾驶人后方有来车",
                        "D、禁止使用远光灯,避免灯光照射至前车后视镜造成自己眩目" }, "C", "",
                R.drawable.pic3));

        list.add(new Question("如图所示,机动车在这种道路上行驶,在道路中间通行的原因是什么?", new String[] {
                "A、在道路中间通行视线好", "B、防止车辆冲出路外", "C、给两侧的非机动车和行人留有充足的通行空间",
                "D、在道路中间通行速度快" }, "C", "", R.drawable.pic4));

        list.add(new Question("在高速公路上驾驶机动车,车辆发生故障后的处置方法,以下说法错误的是什么?",
                new String[] { "A、打开危险报警闪光灯,夜间还应开启示廓灯、后位灯",
                        "B、在车后150米以外设置安全警告标志", "C、车内乘员应下车辅助将故障车辆推移到紧急停车带上",
                        "D、所有人员需离开故障车辆,在紧急停车带或护栏以外安全位置报警并等候救援" }, "C", "", 0));
    }
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            // TODO Auto-generated method stub
            super.onActivityResult(requestCode, resultCode, data);

            //如要返回成功.一定有答案
        if(resultCode==RESULT_OK){
            //返回的键和另一边setResult中的data的键一定要相同
            String answer=data.getStringExtra("answer");
            //设置用户的选择答案
            list.get(requestCode).setUserAnswer(answer);
            //设置界面上的内容
            answers.get(requestCode).setText(answer);
        }

        }


}
package com.example.com.lmt;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;

public class AnswerActivity extends Activity{
    TextView tvQuestion;
    ImageView ivImage;
    RadioGroup rgAnswer;
    Button btnSubmit;
    String userAnswer;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_answer);
        tvQuestion=(TextView) findViewById(R.id.tv_question);
        ivImage=(ImageView) findViewById(R.id.iv_img);
        rgAnswer=(RadioGroup) findViewById(R.id.rg);
        btnSubmit=(Button) findViewById(R.id.btn_submit);

        //设置数据
        Question question=(Question) getIntent().getSerializableExtra("question");

        //设置题目
        tvQuestion.setText(question.getTitle());
        //设置图片
        if(question.getImg()!=0){
            ivImage.setVisibility(View.VISIBLE);
            ivImage.setImageResource(question.getImg());
        }
        //设置答案
        for (int i = 0; i < rgAnswer.getChildCount(); i++) {
            RadioButton button=(RadioButton)rgAnswer.getChildAt(i);
            button.setText(question.getAnswer()[i]);

        }
        //监听用户选择的答案
        rgAnswer.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                // TODO Auto-generated method stub
                userAnswer=rgAnswer.findViewById(checkedId).getTag().toString();
            }
        });
        //按钮返回监听
        btnSubmit.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //带结果返回
                if(userAnswer==null){
                    setResult(RESULT_CANCELED);
                }else{
                    Intent intent=getIntent();
                    intent.putExtra("answer",userAnswer);
                    setResult(RESULT_OK,intent);
                }
                finish();
            }
        });
        //将原来选中的答案的选项,显示在radiobutton上
        if(question.getUserAnswer().length()==1){
            //a=65;a-65=0;b-65=1;
            int index=question.getUserAnswer().charAt(0)-65;
            RadioButton button=(RadioButton) rgAnswer.getChildAt(index);
            button.setChecked(true);
        }
    }

}
package com.example.com.lmt;

import java.io.Serializable;
import java.util.Arrays;

public class Question implements Serializable{
    /**
     * 
     */
    private static final long serialVersionUID = -3234606523759044268L;
    private String title;
    private String[] answer;
    private String trueAnswer;
    private String userAnswer;
    private int img;
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String[] getAnswer() {
        return answer;
    }
    public void setAnswer(String[] answer) {
        this.answer = answer;
    }
    public String getTrueAnswer() {
        return trueAnswer;
    }
    public void setTrueAnswer(String trueAnswer) {
        this.trueAnswer = trueAnswer;
    }
    public String getUserAnswer() {
        return userAnswer;
    }
    public void setUserAnswer(String userAnswer) {
        this.userAnswer = userAnswer;
    }
    public int getImg() {
        return img;
    }
    public void setImg(int img) {
        this.img = img;
    }
    public Question(String title, String[] answer, String trueAnswer,
            String userAnswer, int img) {
        super();
        this.title = title;
        this.answer = answer;
        this.trueAnswer = trueAnswer;
        this.userAnswer = userAnswer;
        this.img = img;
    }
    @Override
    public String toString() {
        return "Question [title=" + title + ", answer="
                + Arrays.toString(answer) + ", trueAnswer=" + trueAnswer
                + ", userAnswer=" + userAnswer + ", img=" + img + "]";
    }
    public Question() {
        super();
        // TODO Auto-generated constructor stub
    }


}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
    android:gravity="center"
    android:padding="10dp">
    <TextView 
        android:id="@+id/tv_question"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <ImageView 
        android:id="@+id/iv_img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="gone"/>
    <RadioGroup 
        android:id="@+id/rg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <RadioButton 
            android:id="@+id/rb_a"
            android:layout_width="wrap_content"
            android:tag="A"
            android:layout_height="wrap_content"
            android:text="A.123"/>
        <RadioButton 
            android:id="@+id/rb_b"
            android:layout_width="wrap_content"
            android:tag="B"
            android:layout_height="wrap_content"
            android:text="B.3"/>
        <RadioButton 
            android:id="@+id/rb_c"
            android:layout_width="wrap_content"
            android:tag="C"
            android:layout_height="wrap_content"
            android:text="C"/>
        <RadioButton 
            android:id="@+id/rb_d"
            android:layout_width="wrap_content"
            android:tag="D"
            android:layout_height="wrap_content"
            android:text="D.123123123"/>
    </RadioGroup>
    <Button 
        android:id="@+id/btn_submit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="提交"/>


</LinearLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
     >

    <TextView
        android:id="@+id/tv_answer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_margin="10dp"
        android:layout_marginLeft="5dp"
        android:text=" "
        android:textColor="#ffffffff"
        android:textSize="18sp" />
    <TextView 
        android:id="@+id/tv_question"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_toLeftOf="@id/tv_answer"
        android:ellipsize="end"
        android:padding="10dp"
        android:singleLine="true"
        android:text="题目"
        android:textSize="18sp"/>
    <View android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_below="@id/tv_answer"
        android:background="#8ccccccc"/>

</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.com.lmt"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="15"
        android:targetSdkVersion="21" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".AnswerActivity"></activity>
        <activity android:name=".Questio"></activity>
    </application>

</manifest>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值