将哈希映射转换为数组列表

10 浏览
0 Comments

将哈希映射转换为数组列表

我是Android的新手...
如何将HashMap的值转换为ArrayList...
我的问题是...
现在我有一个包含所有数据的HashMap(问题ID,问题,带有多个选项的答案)。
现在我想做的是...我需要在TextView中显示问题,并根据问题ID在RadioButton中显示答案,我还有一个下一个按钮,用于根据问题ID显示下一个问题和答案。
所以当我点击下一个按钮时,我应该增加问题ID并显示问题和答案,上一个按钮也是一样的...
请帮助我,我是Android的新手...非常感谢...

HashMap

          String questionid = c.getString(TAG_QUESID);
          String question = c.getString(TAG_QUES);
          String answer = c.getString(TAG_ANSW);
          HashMap map = new HashMap();
          map.put(TAG_QUESID, questionid);
          map.put(TAG_QUES, question);
          map.put(TAG_ANSW, answer);
          System.out.println("QuestionIDMap:"+map);

布局

  
 
     
     
     
     
 
 
 
 

0
0 Comments

(to get the hashmap into arraylist)这个问题的出现的原因以及解决方法

原因:

问题中提到的HashMap存储了一系列的问题和答案选项,现在需要根据问题的ID来显示问题和答案选项,并且在点击"下一题"按钮时,需要递增问题的ID并显示下一题的问题和答案选项。然而,在代码中尝试获取问题并显示时,却只能获取到最后一个问题的内容,而无法获取到其他问题的内容。

解决方法:

1. 将HashMap的定义放在函数的作用域之外,这样就可以从任何地方访问它。

2. 建议将JSON对象与问题ID作为键来存储到HashMap中。

3. 在获取问题和答案选项时,要确保在UI线程中进行操作。

4. 使用一个计数器来跟踪问题的ID,并在点击"下一题"按钮时递增计数器。

我担心你的示例可能太复杂了,无法直接获得答案。此外,如果我正确理解了你的问题,我个人认为你的设计有缺陷。让我们从各个问题和简单的答案开始。

如何将HashMap的值转换为ArrayList:

Java的HashMap有一个简单的方法叫做values(),它可以将HashMap中的所有值转换为一个Collection。假设你使用了泛型,那么可以使用以下代码将HashMap的值转换为ArrayList:

ArrayList valueList = map.values();

在这个问题中,还有一个相关的线程可以参考,它处理了values()方法的使用。

如何将HashMap的值分别设置为问题的文本和答案选项的单选文本:

你的问题有点不清楚。你想提供多个答案吗?你的示例并没有清楚地显示出来。而且,我不认为Android中有一个"radiotext"元素。

如何在点击"下一题"按钮时递增问题的ID:

这个问题让我想到,你在某个地方预定义了问题,并希望用答案填充HashMap。我将解释我认为最好的做法。如果不是这种情况,请随时评论,提供更准确的描述,我会回复你。

在Android中,你有可能使用`strings.xml`文件来预定义字符串,该文件位于`res\values`文件夹中。我建议你在那里定义问题,如果问题不会改变的话。现在,在创建布局时,你可以在布局XML文件中使用`android:text`元素来设置问题。你可以按照以下方式使用它:


当然,你也可以在初始化视图时以编程方式进行设置,使用以下方法:

TextView yourTextView =(TextView) findViewById(R.id.your_text_view);
yourTextView.setText("Your question should go here!");

为了获取答案,你希望用户在每个答案后或问卷结束时点击一个按钮。这个教程展示了如何做到这一点。在实现`OnEditorActionListener`的回调函数中,你可以获取每个字段的内容并将其放入数组中。由于你为字段提供了ID,所以匹配问题和答案应该没有任何问题。

这还剩下一个问题,计数问题数量,给它们分配一个ID,并跟踪这个ID。在你的设计中,这有点麻烦。让我们来看看它:

HashMap map = new HashMap();
map.put(TAG_QUESID, questionid);
map.put(TAG_QUES, question);
map.put(TAG_ANSW, answer);

使用这种设计,你的键需要是唯一的。这意味着如果键是常量,你只能始终只有一个问题和答案。我建议你要么使用一个复杂对象来存储问题和答案,并使用`HashMap`,其中String是你的ID,QuestionnaireItem是你的复杂对象。或者你可以使用多层HashMap,但这会很快变得混乱,如`HashMap>`。至于计数,当你用答案填充map时,简单地保持一个计数器,并在每次添加元素时递增它。

如果你能提供一个更好的问题描述,我会很乐意帮助你。

0