【问题标题】:How to combine multiple ArrayList<Hashmap> values into one ListView如何将多个 ArrayList<Hashmap> 值组合成一个 ListView
【发布时间】:2018-06-03 18:28:58
【问题描述】:

对于我面临的这个问题,我有下图;

这是我的代码中的 ArrayList 示例;

[{name0=Adventurousness, value0=46}, {value1=98, name1=Artistic interests}, {name2=Emotionality, value2=70}, {value3=54, name3=Imagination}, {value4=99, name4=Intellect}, {value5=98, name5=Authority-challenging}, {name0=Achievement striving, value0=62}, {value1=98, name1=Cautiousness}, {name2=Dutifulness, value2=69}, {value3=75, name3=Orderliness}, {value4=44, name4=Self-discipline}, {value5=65, name5=Self-efficacy}, {name0=Activity level, value0=69}, {value1=75, name1=Assertiveness}, {name2=Cheerfulness, value2=0}, {value3=6, name3=Excitement-seeking}, {value4=7, name4=Outgoing}, {value5=0, name5=Gregariousness}, {name0=Altruism, value0=84}, {value1=86, name1=Cooperation}, {name2=Modesty, value2=61}, {value3=81, name3=Uncompromising}, {value4=99, name4=Sympathy}, {value5=54, name5=Trust}, {name0=Fiery, value0=5}, {value1=19, name1=Prone to worry}, {name2=Melancholy, value2=76}, {value3=46, name3=Immoderation}, {value4=72, name4=Self-consciousness}, {value5=18, name5=Susceptible to stress}]

您可以想象另一个类似的 ArrayList 包含 (name0,value0) 值。

我不知道如何实现这一点,我尝试了类似的方法但没有奏效;这些是ListView 中的 ID,我希望将这些值放入其中。

sample1Adapter = new SimpleAdapter(getApplicationContext(), sample1List2,
R.layout.samplecontent, new String[]{ "name0", "value0",
"name1", "value1", "name2", "value2",
"name3", "value3", "name4", "value4", "name5", "value5"},
new int[]{R.id.name2, R.id.value2, R.id.name3, R.id.value3,
R.id.name4, R.id.value4, R.id.name5, R.id.value5,
R.id.name6, R.id.value6, R.id.name7, R.id.value7});
listview.setVerticalScrollBarEnabled(true);
listview.setAdapter(sample1Adapter);

谢谢。

【问题讨论】:

  • 请看这篇文章,可能对你有帮助stackoverflow.com/questions/6383330/…
  • 我已经看过那个帖子了。变化在于那个问题,我想要所有数据值(“first_data1”等),在“firstname1_data1”值下。

标签: java android listview arraylist hashmap


【解决方案1】:

您似乎希望每行显示 4 个键值对。创建一个具有这些键值对的对象,然后将您的适配器绑定到这些对象的列表。假设键值对表示杂志的属性:

class Magazine implements Parcelable 
String publisher;
String title;
int numCopiesAvailable;
int numCopiesSold;

String getPublisher()

将 Magazine 类型的列表传递给您的自定义适配器,并在其中渲染每个元素。每行显示一行,包含 4 个属性

【讨论】:

  • 你能回答我的问题吗?这没有任何意义。
  • 它回答了你的问题。如果要每行显示 4 个键值对,请创建一个表示它的模型,然后通过 recyclerview 渲染它。 recyclerview 需要一个适配器,因此将该模型的列表传递给适配器。你让一个简单的问题变得困难
  • 问题是如何。我有问题中的所有变量和数据。如果您不能正确回答问题,请不要写答案。
【解决方案2】:

解决方案 1: 而不是SimpleAdapter 使用ArrayAdapter 传递您的ArrayList&lt;HashMap&gt; 对象

解决方案2: 创建您的自定义适配器及其构造函数传递您的 ArrayList&lt;HashMap&gt; 对象并处理其中的数据以加载到您的 ListView

【讨论】:

【解决方案3】:

支持有3个ArrayList&lt;HashMap&gt;而不是把它们放到一个finalList中。

再来一张

 ArrayList<HashMap> finalList = new HashMap();

您可以使用循环将所有内容添加到最终列表中

finalList.put("0",haspMapList1);
finalList.put("1",haspMapList2);

比在您的 CustomListAdapter 中传递此列表。

【讨论】:

    猜你喜欢
    • 2021-12-21
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    • 2017-07-14
    • 2021-11-26
    • 2016-11-04
    • 2014-08-14
    • 1970-01-01
    相关资源
    最近更新 更多