0

だから私はアンドロイドのためのクイズを作っています、そして私は問題を抱えています。JSONArraysのサーバーからの質問と回答を解析し、必要なものを取得します。したがって、アクティビティを開始すると、最初の質問とそれに関連する回答が表示され、TextViewに質問が表示され、ListViewに回答が表示されます。しかし、ここに問題があります。回答を選択するときに次の質問を表示したいので、JSONObjectをループして、前の質問に回答したときに新しい質問を表示します。誰かが私がそれをどのように行うことができるか考えていますか?

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.game);
    listView = (ListView)findViewById(R.id.list_answers);
    gametv = (TextView)findViewById(R.id.text_question);

    Intent intent = getIntent();

    final String gameID = intent.getStringExtra("gameID");
    final int questionAmount = intent.getIntExtra("amount", 0);
    final Set<String> set = new HashSet<String>();


    JSONArray quiz = null;
    try {
        JSONObject json = new JSONObject();
        json.put("gameID", gameID);

        quiz = SendHttp.parseHttp(qURL, "result", json);



            displayQuiz(quiz, questionAmount);


    } catch (JSONException e) {
        e.printStackTrace();
    }


    listView.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {

            TextView tv = (TextView)view.findViewById(R.id.tv_1);
            String answerString = tv.getText().toString();

            set.add(answerString);
            Toast.makeText(Game.this, answerString, Toast.LENGTH_SHORT).show();

            Log.w("svarat", set.toString());

        }
    });
}

private void displayQuiz(JSONArray jsona, int amount) throws JSONException {



    gametv.setText(jsona.getJSONObject(0).getString("question"));

    int numberOfAnswers = Integer.parseInt(jsona.getJSONObject(0).getString("n"));

    ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
    HashMap<String, String> map = new HashMap<String, String>();

    for (int i = 0; i < numberOfAnswers; i++) {


        String qans = jsona.getJSONObject(0).getString(String.valueOf(i+1));

        JSONObject answer = new JSONObject(qans);

        map.put("answerID", answer.getString("answerID"));
        map.put("answer", answer.getString("answer"));


        mylist.add(map);

        map = new HashMap<String, String>();


    }
    SimpleAdapter sadapter = new SimpleAdapter(this, mylist, R.layout.quizlist, new String[] {"answerID","answer"},
            new int[] {R.id.tv_1, R.id.tv_2}); 


    listView.setAdapter(sadapter);

}
4

1 に答える 1

0

listViewでnotifyDataSetChanged()を呼び出してみましたか?

添加

したがって、最初の質問ですべてが正しく表示される場合は、回答をクリックするたびに増分する方法を次に示します。

int questionNumber = 0;
...

    ...
    listView.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
            questionNumber++;
            ...

            displayQuiz(...);
        }
    }

    private void displayQuiz(JSONArray jsona, int amount) throws JSONException {
        gametv.setText(jsona.getJSONObject(questionNumber).getString("question"));
        ...
    }
    ...
于 2012-04-19T15:54:38.963 に答える