0

我是安卓新手。。

我有三个 ArrayList hashmap..一个用于问题,第二个用于问题 ID,第三个用于答案..

我得到了 JSON 对象中的问题和问题 ID 和答案。现在我想显示问题和答案......我需要的是,我有三个 ArrayList。QtnsArraylist1(ques1) 包含 100 个元素(100 个问题),QuestidArraylist 包含 100 个 id,AnsArraylist2(answ1) 包含 400 个元素(400 个答案,每个问题 4 个选项总共 400 个元素)。我想从 hashmap 中获取这些值..

对于我在 QtnsArraylist1(ques1) 中的第一个问题,我必须根据 hashmap 键 questionid 从 AnsArraylist2(answ1) 中获取前 4 个元素。类似地,如果我给出下一个按钮,它会显示问题 2、3、4...。这些都应该做 onPostExecute() 我怎么能得到这个?

提前致谢..

  protected void onPostExecute(String file_url) {
        pDialog.dismiss();       
        ques1=new ArrayList<String>(new HashSet<String>(ques1));
        System.out.println(" Question array:"+ques1);
        String[] quesArr = new String [ques1.size()];
        quesArr = ques1.toArray(quesArr);
        for(String s: quesArr){
            System.out.println("All Array Questions:"+s);
            final TextView txtque = (TextView) findViewById(R.id.que_txt);
            final String text=ques1.get(j).toString();
            System.out.println("Array:"+text);
            txtque.setText(text);
        }            
        answ1=new ArrayList<String>(new ArrayList<String>(answ1));
        System.out.println(" Answer array:"+answ1);
        String[] answArr = new String [answ1.size()];
        answArr = answ1.toArray(answArr);
        for(String A: answArr){
            // final Object getName0 = answArr[0].toString();
            // final Object getName1 = answArr[1].toString();
            // final Object getName2 = answArr[2].toString();
            // final Object getName3 = answArr[3].toString();
            Collections.sort(answ1, new Comparator<String>() {
                @Override
                public int compare(String s1, String s2) {
                    return s1.compareToIgnoreCase(s2);
                }
            });
        System.out.println("All Array Answers:"+A);    
        }                 
        btn_practicerg =(RadioGroup) findViewById(R.id.rdgroup);
        btn_practice1 = (RadioButton) findViewById(R.id.RB1);
        btn_practice1.setText(String.valueOf(answArr[0]));
        btn_practice2 = (RadioButton) findViewById(R.id.RB2);
        btn_practice2.setText(String.valueOf(answArr[1]));
        btn_practice3 = (RadioButton) findViewById(R.id.RB3);
        btn_practice3.setText(String.valueOf(answArr[2]));
        btn_practice4 = (RadioButton) findViewById(R.id.RB4);
        btn_practice4.setText(String.valueOf(answArr[3]));              
        Button nextBtn = (Button) findViewById(R.id.nxt_btn);
        nextBtn.setOnClickListener(new Button.OnClickListener(){
            public void onClick(View v){
            j++;
            TextView txtque = (TextView) findViewById(R.id.que_txt);
            txtque.setText(ques1.get(j).toString());                               
            k++;
            btn_practice1.setText(answ1.get(k).toString());
            k++;
            btn_practice2.setText(answ1.get(k).toString());
            k++;
            btn_practice3.setText(answ1.get(k).toString());
            k++;
            btn_practice4.setText(answ1.get(k).toString());
4

1 回答 1

1

您可以将您的答案作为 HashMap 放在 Arraylist 中。这将使您所有的 ArrayList 大小相同。

例如,

HashMap<String, String> hm = new HashMap<String, String>();
hm.put("1", "abc");
hm.put("2", "def");
hm.put("3", "ghi");
hm.put("4", "jkl");

ArrayList<HashMap<String, String>> lstAns = new ArrayList<HashMap<String,String>>();
lstAns.add(hm);

要访问答案:

System.out.println("answer1 " + lstAns.get(index).get("1")); // gives "abc"
于 2013-01-25T11:11:40.047 回答