【问题标题】:Android - Retrieve data per row when button is clicked (NEXT/PREVIOUS)Android - 单击按钮时检索每行数据(下一个/上一个)
【发布时间】:2016-07-10 03:06:24
【问题描述】:

我有一个测验活动,它使用按钮(下一个/上一个)从 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 按钮中。谢谢

【问题讨论】:

    标签: php android mysql


    【解决方案1】:

    您必须在 java 类中保留两个变量作为 previous 和 next。 默认在activity开始时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 编码获取的数据。 希望这能解决您的问题。谢谢。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-11
        • 1970-01-01
        • 2021-04-09
        • 2011-09-23
        • 2012-06-06
        相关资源
        最近更新 更多