我正在使用Retrofit
来分析问题数组的测验应用程序。有10个问题,每个问题有4个选择(单选按钮),如果单击“ 下一个”按钮将被更改。单击按钮时,它应保存用户的答案,如果答案正确,则分数应增加10分。用户回答完所有问题后,下一个活动中应显示总分。
我已经在寻找参考了,但是,当我单击“ 下一个”按钮并将用户的答案存储在我的项目中并同时计算分数时,我对如何设置更改的文本感到困惑。请帮我。预先感谢。
这是我的JSON响应
{
"error": false,
"status": "success",
"result": [
{
"id": 96,
"description": "Meyakini dalam hati, mengucapkan dengan lisan, dan mengamalkan dalam kehidupan sehari-hari adalah arti dari . . . .",
"A": "iman",
"B": "islam",
"C": "ihsan",
"D": "takwa",
"Answer": "iman",
"discussion": "Iman kepada Allah Swt. adalah percaya dengan sepenuh hati bahwa Dia itu ada, diucapkan dengan lisan, dan diamalkan dalam perbuatan sehari-hari."
},
{
"id": 97,
"description": "Fatimah disuruh membeli minyak goreng di sebuah warung. Ketika menerima uang kembalian, ia tahu bahwa jumlahnya lebih dari seharusnya, lalu ia mengembalikannya. Ia sadar bahwa Allah Swt. selalu mengawasi perbuatannya, karena Allah Swt. bersifat . . . .",
"A": "al-'Aliim",
"B": "al-Khabiir",
"C": "as-Samii'",
"D": "al-Basiir",
"Answer": "al-Basiir",
"discussion": "Allah Maha Mengawasi yang berarti juga Allah Maha Melihat (al_Basiir)."
},
{
"id": 98,
"description": "Subhanallah, indahnya alam semesta dengan segala isinya. Semuanya tercipta dengan teratur dan seimbang. Fenomena alam tersebut merupakan bukti bahwa Allah Maha . . . .",
"A": "mengetahui",
"B": "teliti",
"C": "mendengar",
"D": "melihat",
"Answer": "teliti",
"discussion": "Semuanya tercipta dengan teratur dan seimbang yang berarti Allah Maha Teliti."
},
{
"id": 99,
"description": "Hasan selalu berhati-hati dalam setiap ucapan dan perbuatannya, karena ia yakin bahwa Allah Swt. senantiasa mendengarnya. Perbuatan tersebut merupakan pengamalan dari keyakinannya bahwa Allah Swt. bersifat . . . .",
"A": "al-'Aliim",
"B": "al-Khabiir",
"C": "as-Samii'",
"D": "al-Basiir",
"Answer": "as-Samii'",
"discussion": "Allah Swt. senantiasa mendengarnya yang berarti Allah Maha Mendengar (as-Samii')."
},
{
"id": 100,
"description": "Di antara bentuk pengamalan dari keyakinan terhadap al-'Aliim adalah . . . .",
"A": "rajin dalam menimba ilmu",
"B": "berusaha menghindari kemungkaran",
"C": "bersikap dermawan kepada sesama",
"D": "bersikap pemaaf kepada sesama",
"Answer": "rajin dalam menimba ilmu",
"discussion": "Allah Swt. sangat menyukai orang yang rajin mencari ilmu pengetahuan dan mengamalkannya"
},
{
"id": 101,
"description": "Allah Swt. sendirilah yang mengetahui kapan terjadinya hari kiamat, mengetahui apa yang terkandung di dalam rahim, mengetahui kapan akan turun hujan. Allah Swt. Maha Mengetahui merupakan makna dari . . . .",
"A": "al-'Aliim",
"B": "al-Khabiir",
"C": "as-Samii'",
"D": "al-Basiir",
"Answer": "al-'Aliim",
"discussion": "Dari kasus di atas berarti Allah Maha Mengetahui (al-'Aliim)."
},
{
"id": 102,
"description": "Di antara bentuk pengamalan dari keyakinan terhadap al-Khabiir adalah . . . .",
"A": "suka berbagi pengalaman dan pengetahuan",
"B": "senang menolong orang yang sedang susah",
"C": "menjadi suri teladan bagi orang lain",
"D": "bersemangat dan kreatif dalam segala hal",
"Answer": "bersemangat dan kreatif dalam segala hal",
"discussion": "Allah Swt. menciptakan milyaran makhluk dengan berbagai ragamnya. Semuanya diketahui oleh Allah dengan detail, penuh kecermatan dan kewaspadaan, baik secara lahir maupun batin."
},
{
"id": 103,
"description": "Allah Swt. Maha Mendengar suara apa pun yang ada di alam semesta ini. Pendengaran Allah tidak terbatas, tidak ada satu pun suara yang lepas dari pendengaran-Nya. Allah Swt. Maha Mendengar merupakan makna dari . . . .",
"A": "al-'Aliim",
"B": "al-Khabiir",
"C": "as-Samii'",
"D": "al-Basiir",
"Answer": "as-Samii'",
"discussion": "Allah Maha Mendengar atau disebut juga dengan as-Samii'."
},
{
"id": 104,
"description": "Allah Swt. Maha Melihat segala sesuatu walaupun lembut dan kecil. Allah Swt. pun melihat apa yang ada di bumi dan di langit. Allah Maha Melihat merupakan makna . . . .",
"A": "al-'Aliim",
"B": "al-Khabiir",
"C": "as-Samii'",
"D": "al-Basiir",
"Answer": "al-Basiir",
"discussion": "Allah Maha Melihat atau disebut juga dengan al-Basiir."
},
{
"id": 105,
"description": "Di antara bentuk pengamalan dari keyakinan terhadap al-Basiir adalah . . . .",
"A": "introspeksi diri untuk kebaikan",
"B": "introspeksi diri untuk kebaikan",
"C": "amar ma’ruf nahi munkar",
"D": "menjadi suri tauladan bagi orang lain",
"Answer": "introspeksi diri untuk kebaikan",
"discussion": "Kita diharuskan selalu introspeksi diri untuk melihat kelebihan dan kekurangan kita sendiri agar hidup menjadi lebih terarah, ini merupakan salah satu pengalaman dari al-Basiir"
}
]
}
我对应的模型课
public class Task {
@SerializedName("id")
@Expose
private int id_soal;
@SerializedName("description")
@Expose
private String soal;
@SerializedName("A")
@Expose
private String option_A;
@SerializedName("B")
@Expose
private String option_B;
@SerializedName("C")
@Expose
private String option_C;
@SerializedName("D")
@Expose
private String option_D;
@SerializedName("Answer")
@Expose
private String jawaban;
@SerializedName("discussion")
@Expose
private String pembahasan;
public Task(int id_soal, String soal, String option_A, String option_B, String option_C, String option_D, String jawaban, String pembahasan) {
this.id_soal = id_soal;
this.soal = soal;
this.option_A = option_A;
this.option_B = option_B;
this.option_C = option_C;
this.option_D = option_D;
this.jawaban = jawaban;
this.pembahasan = pembahasan;
}
还有我的TaskActivity
public class TaskActivity extends AppCompatActivity {
private ArrayList<Task> tasks;
TextView task_question;
RadioGroup choices_group;
RadioButton choice_A, choice_B, choice_C, choice_D;
Button next, previous;
ProgressDialog loading;
Token auth = PreferencesConfig.getInstance(this).getToken();
String token = "Bearer " + auth.getToken();
int score;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_banksoal_test);
task_question = findViewById(R.id.pertanyaan);
choices_group = findViewById(R.id.rg_question);
choice_A = findViewById(R.id.option_A);
choice_B = findViewById(R.id.option_B);
choice_C = findViewById(R.id.option_C);
choice_D = findViewById(R.id.option_D);
next = findViewById(R.id.bNext);
previous = findViewById(R.id.bPrevious);
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//????????
}
});
}
@Override
protected void onResume() {
super.onResume();
alert_start();
}
public void alert_start(){
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("Mulai?");
alertDialog.setNegativeButton("Jangan dulu, saya belum siap!", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(TaskActivity.this, BanksoalShelvesActivity.class);
startActivity(intent);
}
});
alertDialog.setPositiveButton("Ayo, dimulai!", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
task();
dialog.dismiss();
}
});
AlertDialog alert = alertDialog.create();
alert.show();
}
public void task(){
loading = ProgressDialog.show(this, null, "Please wait...",true, false);
Intent intent = getIntent();
final int task_id = intent.getIntExtra("task_id", 0);
int classes = intent.getIntExtra("task_class", 0);
Call<ResponseTask> call = RetrofitClient
.getInstance()
.getApi()
.taskmaster_task(token, task_id, classes);
call.enqueue(new Callback<ResponseTask>() {
@Override
public void onResponse(Call<ResponseTask> call, Response<ResponseTask> response) {
loading.dismiss();
ResponseTask responseTask = response.body();
Log.d("TAG", "Response " + response.body());
if (response.isSuccessful()){
if (responseTask.getStatus().equals("success")){
Log.i("debug", "onResponse : SUCCESSFUL");
tasks = responseTask.getTasks();
showQuestion();
}else {
Log.i("debug", "onResponse : FAILED");
}
}
}
@Override
public void onFailure(Call<ResponseTask> call, Throwable t) {
Log.e("debug", "onFailure: ERROR > " + t.getMessage());
loading.dismiss();
Toast.makeText(TaskActivity.this, "Kesalahan terjadi.", Toast.LENGTH_LONG).show();
}
});
}
public void showQuestion(){
for (int i = 0; i < tasks.size(); i++){
task_question.setText(tasks.get(i).getSoal());
choice_A.setText(tasks.get(i).getOption_A());
choice_B.setText(tasks.get(i).getOption_B());
choice_C.setText(tasks.get(i).getOption_C());
choice_D.setText(tasks.get(i).getOption_D());
}
}
}
答案 0 :(得分:0)
创建一个字符串变量task_answer
,并从Task
获得答案(在给定的代码jawaban
中)。单击“下一步”按钮时,检查所选选项是否正确答案并增加分数。回答完所有问题后,将分数通过Intent传递到下一个活动ResultActivity
。我在下面添加了经过修改的TaskActivity
代码:
public class TaskActivity extends AppCompatActivity {
private ArrayList<Task> tasks;
TextView task_question;
RadioGroup choices_group;
RadioButton choice_A, choice_B, choice_C, choice_D;
Button next, previous;
ProgressDialog loading;
Token auth = PreferencesConfig.getInstance(this).getToken();
String token = "Bearer " + auth.getToken();
int score;
String task_answer;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_banksoal_test);
task_question = findViewById(R.id.pertanyaan);
choices_group = findViewById(R.id.rg_question);
choice_A = findViewById(R.id.option_A);
choice_B = findViewById(R.id.option_B);
choice_C = findViewById(R.id.option_C);
choice_D = findViewById(R.id.option_D);
next = findViewById(R.id.bNext);
previous = findViewById(R.id.bPrevious);
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//check if the provided option matches with the answer received from the API & store the value
if (task_answer.equals(selectedChoiceText))
score += 10
}
});
}
@Override
protected void onResume() {
super.onResume();
alert_start();
}
public void alert_start(){
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("Mulai?");
alertDialog.setNegativeButton("Jangan dulu, saya belum siap!", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(TaskActivity.this, BanksoalShelvesActivity.class);
startActivity(intent);
}
});
alertDialog.setPositiveButton("Ayo, dimulai!", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
task();
dialog.dismiss();
}
});
AlertDialog alert = alertDialog.create();
alert.show();
}
public void task(){
loading = ProgressDialog.show(this, null, "Please wait...",true, false);
Intent intent = getIntent();
final int task_id = intent.getIntExtra("task_id", 0);
int classes = intent.getIntExtra("task_class", 0);
Call<ResponseTask> call = RetrofitClient
.getInstance()
.getApi()
.taskmaster_task(token, task_id, classes);
call.enqueue(new Callback<ResponseTask>() {
@Override
public void onResponse(Call<ResponseTask> call, Response<ResponseTask> response) {
loading.dismiss();
ResponseTask responseTask = response.body();
Log.d("TAG", "Response " + response.body());
if (response.isSuccessful()){
if (responseTask.getStatus().equals("success")){
Log.i("debug", "onResponse : SUCCESSFUL");
tasks = responseTask.getTasks();
showQuestion()
}else {
Log.i("debug", "onResponse : FAILED");
}
}
}
@Override
public void onFailure(Call<ResponseTask> call, Throwable t) {
Log.e("debug", "onFailure: ERROR > " + t.getMessage());
loading.dismiss();
Toast.makeText(TaskActivity.this, "Kesalahan terjadi.", Toast.LENGTH_LONG).show();
}
});
}
public void showQuestion(){
for (int i = 0; i < tasks.size(); i++){
task_question.setText(tasks.get(i).getSoal());
choice_A.setText(tasks.get(i).getOption_A());
choice_B.setText(tasks.get(i).getOption_B());
choice_C.setText(tasks.get(i).getOption_C());
choice_D.setText(tasks.get(i).getOption_D());
//get answer from task
task_answer = tasks.get(i).getAnswer()
}
}
}
答案 1 :(得分:0)
首先,您需要存储currentTaskId:
private int currentTaskId = 0;
然后,您应该在变量中加载收到的任务:
tasks = responseTask.getTasks();
loadQuestion();
在TaskActivity中的某处,您需要编写此方法,向用户显示问题:
private void loadQuestion(){
Task task = tasks.get(currentTaskId);
task_question.setText(task.getSoal());
choice_A.setText(task.getOption_A());
choice_B.setText(task.getOption_B());
choice_C.setText(task.getOption_C());
choice_D.setText(task.getOption_D());
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//check task answer, if task was answered correct than score+=10
if(currentTaskId<tasks.size()){
currentTaskId++;
loadQuestion();
} else {
//open new activity
}
}
});
previous.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(currentTaskId>0){
currentTaskId--;
loadQuestion();
} else {
//do nothing as we are already on the first question
}
}
});
}