Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在单击按钮以填充活动时逐个获得改装响应?_Java_Android_Json_Retrofit_Retrofit2 - Fatal编程技术网

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++;
}