Java 如何在单击按钮以填充活动时逐个获得改装响应?
我正在开发一个测验应用程序,在这个程序中,我可以通过Java 如何在单击按钮以填充活动时逐个获得改装响应?,java,android,json,retrofit,retrofit2,Java,Android,Json,Retrofit,Retrofit2,我正在开发一个测验应用程序,在这个程序中,我可以通过reformationlibrary获得问题、4个选项及其正确答案。我想在我的quizaActivity中填写多个问题和答案。“活动”包含两个按钮“下一个”和“上一个”,用于获取下一个或上一个问题,其选项取决于相应的onClick事件。我通过改装获得了正确的JSON响应,但无法找到实现目标的方法,即使用按钮点击事件。我为这个解决方案做了很多研究,最后提出了这个问题。提前谢谢 以下是quizaActivity.java的代码: package c
reformation
library获得问题、4个选项及其正确答案。我想在我的quizaActivity
中填写多个问题和答案。“活动”包含两个按钮“下一个”和“上一个”,用于获取下一个或上一个问题,其选项取决于相应的onClick
事件。我通过改装获得了正确的JSON
响应,但无法找到实现目标的方法,即使用按钮点击事件。我为这个解决方案做了很多研究,最后提出了这个问题。提前谢谢
以下是quizaActivity.java的代码:
package com.oskartechnologies.safetymodule;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import org.json.JSONArray;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class QuizActivity extends AppCompatActivity implements View.OnClickListener {
TextView question;
RadioButton optiona, optionb, optionc, optiond;
RadioGroup radioGroup;
Button next, previous;
int questionsCount;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz);
radioGroup = (RadioGroup) findViewById(R.id.radiogroup);
optiona = (RadioButton) findViewById(R.id.optiona);
optionb = (RadioButton) findViewById(R.id.optionb);
optiond = (RadioButton) findViewById(R.id.optionc);
optiond = (RadioButton) findViewById(R.id.optiond);
question = (TextView) findViewById(R.id.questionView);
previous = (Button) findViewById(R.id.prevButton);
next = (Button) findViewById(R.id.nextButton);
previous.setOnClickListener(this);
getQuiz();
}
private void getQuiz() {
final BlockingQueue<JSONArray> blockingQueue = new ArrayBlockingQueue<>(1);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://netcafe.oskartechnologies.com/").addConverterFactory(GsonConverterFactory.create()).build();
APiService service = retrofit.create(APiService.class);
Call<List<QuizModule>> call = service.getQuizData("1");
Log.d("retrofit", call + "");
call.enqueue(new Callback<List<QuizModule>>() {
List<QuizModule> list;
@Override
public void onResponse(Call<List<QuizModule>> call, Response<List<QuizModule>> response) {
Log.d("Response", response.message().toString());
list = response.body();
//questionsCount = list.size();
//QuizModule q = new QuizModule();
//for (int i = 0; i < list.size(); i++) {
//String questiontext = list.get(i).getQuestion();
//question.setText(questiontext);
//}
}
@Override
public void onFailure(Call<List<QuizModule>> call, Throwable t) {
Log.d("Failure", t.getMessage().toString());
}
});
}
@Override
public void onClick(View view) {
if (view.getId() == R.id.nextButton) {
if (questionsCount > 0) {
}
}
}
}
以下是我得到的JSON
响应:
[
{
"question": "If a cream coloured band is located over the fire extinguisher, it indicates that the fire extinguisher is which of the following?",
"option_a": "Water",
"option_b": "Dry Powder",
"option_c": "Foam",
"option_d": "Carbon Dioxide",
"answer": "Foam"
},
{
"question": "Which type of fire extinguish do you use to fight an electrical fire if a carbon dioxide extinguisher is unavailable?",
"option_a": "Water",
"option_b": "Wet Chemical",
"option_c": "Foam",
"option_d": "Dry Powder",
"answer": "Dry Powder"
}
]
将List
设置为全局变量,以便可以在onClick方法中访问它。
还添加一个全局计数器以跟踪问题索引:int counter
然后在您的onClick中:
if (questionsCount > 0) {
String questiontext = list.get(counter).getQuestion();
question.setText(questiontext);
counter++;
}
得到响应后,您应该执行list.get(0)
并填充视图。当用户按下“下一步”时,您将递增questionCount
,然后再次执行列表。获取(questionCount)
并填充视图。
if (questionsCount > 0) {
String questiontext = list.get(counter).getQuestion();
question.setText(questiontext);
counter++;
}