Android - 单击按钮时每行检索数据(NEXT / PREVIOUS)

时间:2016-07-10 03:06:25

标签: php android mysql

我有一个测验活动,使用Button(NEXT / PREVIOUS)从mysql检索数据。当应用程序启动时,它会查看第一行。我希望NEXT按钮能够查看数据库中的第二行。

这是我的json

{"result":[{"id":"1","question":"Numbers","answer":"1","dummy1":"2","dummy2":"3","dummy3":"4","quiz_id":"1"},{"id":"2","question":"Letters","answer":"a","dummy1":"b","dummy2":"c","dummy3":"d","quiz_id":"1"}]}

在我的OnCreate中,我开始提取数据。它与第一行数据配合得很好。

private void getQuestion(){
    class GetJSON extends AsyncTask<Void,Void,String> {
        ProgressDialog loading;
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            loading = ProgressDialog.show(QuizActivity.this,"Fetching Data","Wait...",false,false);
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            loading.dismiss();
            JSON_STRING = s;
            showQuestion();
        }

        @Override
        protected String doInBackground(Void... params) {
            RequestHandler rh = new RequestHandler();
            String waws = "1";
            String s = rh.sendGetRequest(AppConfig.URL_GET_QUIZWITHSTUDENTCLASSBYSCHOOLID+waws);
            return s;
        }
    }
    GetJSON gj = new GetJSON();
    gj.execute();
}

private void showQuestion(){
    JSONObject jsonObject = null;
    try {
        jsonObject = new JSONObject(JSON_STRING);
        JSONArray result = jsonObject.getJSONArray(AppConfig.TAG_JSON_ARRAY);

        JSONObject jo = result.getJSONObject(0);
        String question = jo.getString("question");
        answer = jo.getString("answer");
        String dummy1 = jo.getString("dummy1");
        String dummy2 = jo.getString("dummy2");
        String dummy3 = jo.getString("dummy3");

        quizQuestion.setText(question);

        ArrayList<String> tmp = new ArrayList<>();
        tmp.add(answer);
        tmp.add(dummy1);
        tmp.add(dummy2);
        tmp.add(dummy3);
        Collections.shuffle(tmp);
        optionOne.setText(tmp.get(0));
        optionTwo.setText(tmp.get(1));
        optionThree.setText(tmp.get(2));
        optionFour.setText(tmp.get(3));
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

我已将我的下一个按钮设为

nextButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String rawAnswer = null;
            if (optionOne.isChecked()) {
                rawAnswer = optionOne.getText().toString().trim();
            } else if (optionTwo.isChecked()) {
                rawAnswer = optionTwo.getText().toString().trim();
            } else if (optionThree.isChecked()) {
                rawAnswer = optionThree.getText().toString().trim();
            } else if (optionFour.isChecked()) {
                rawAnswer = optionFour.getText().toString().trim();
            }
            if (rawAnswer.equals(answer)) {
                Toast.makeText(QuizActivity.this, "Correct! ", Toast.LENGTH_LONG).show();
            } else {
                Toast.makeText(QuizActivity.this, "Wrong!", Toast.LENGTH_LONG).show();
            }
        }
    });

确定答案是正确还是不正确是完美的。

我想知道在单击NEXT按钮时如何获取mysql数据库中的下一行数据。以及在PREVIOUS按钮。感谢

2 个答案:

答案 0 :(得分:0)

你必须在java类中保留两个变量作为上一个和下一个。 默认情况下,活动开始时为previous = 1,next = 2; 你的获取网址将是这样的:

"http://example.com/requestpage.php?fetch_id="+next
In the requestpage.php:

$fetch_id=$_REQUEST['fetch_id'];
$sql="SELECT * from tablename where id=$fetch_id";

//执行sql,json对获取的数据进行编码。 希望这能解决你的问题。谢谢。

答案 1 :(得分:0)

假设您当前正在查看问题,并且您需要使用上一个按钮和下一个按钮分别获取下一个问题和上一个问题。使用一个全局变量来跟踪当前从服务器端获取的问题ID以便下次单击下一个或上一个时可以使用该全局变量的值。如果单击下一个按钮,则编写逻辑以在当前问题ID值之后获取问题。如果单击上一个按钮,则写入逻辑以获取当前问题id值之前的上一个问题。也处理下一个问题或上一个问题不可用的情况。如果您从服务器端一次检索一个问题,这种方法会有所帮助。