2012-04-19 9 views
0

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

@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); 

} 

答えて

0

リストビューにnotifyDataSetChanged()を呼び出してみましたか?

ADDITION

すべては最初の質問のために適切に表示されるのであれば、ここでは各回答のクリックでインクリメントするアプローチがあります。

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")); 
     ... 
    } 
    ... 
+0

ありません私は、大きなヒントを持っていません。しかし、私はそれをJSONArrayをループするためにどのように使用しますか?私が見る – simtaxman

+0

、あなたの質問はJSONArrayのデータ_out_は、それがリストビューを_in_入れていないなってきています。 **私の申し訳ありません。** JSONで作業していないので、ここでは役に立たないです。 – Sam

+0

'文字列qans = jsona.getJSONObject(0).getString(String.valueOf(I + 1));' getJSONObjectは、(1) '次の質問には、それは'呼び出しとして、それのように単純ではありませんか? – Sam