【问题标题】:What data structure to use to keep item ordering in adapter for a ListView使用什么数据结构来保持 ListView 适配器中的项目排序
【发布时间】:2017-07-31 16:56:12
【问题描述】:

我试图弄清楚为什么我的列表视图中的项目以错误的顺序显示。我认为这与迭代器有关,但我不确定。

这是我活动中的代码:

 //String Capitole
    String Articolul1 = getResources().getString(R.string.dispozitiiGeneraleArt_1);
    String Articolul2 = getResources().getString(R.string.dispozitiiGeneraleArt_2);
    String Articolul3 = getResources().getString(R.string.dispozitiiGeneraleArt_3);

    //ListView Set

    ListView listDispGen = (ListView) findViewById(R.id.dispozitiigeneralelist);

    HashMap<String, String> articolExplicatii = new HashMap<>();
    articolExplicatii.put(" Art.1", Articolul1);
    articolExplicatii.put(" Art.2", Articolul2);
    articolExplicatii.put(" Art.3", Articolul3);

    List<HashMap<String, String>> listItems = new ArrayList<>();
    SimpleAdapter adapter = new SimpleAdapter(this, listItems, R.layout.dispgeneralelist,
            new String[]{"First Line", "Second Line"},
            new int[]{R.id.main_item, R.id.sub_item});

    Iterator it = articolExplicatii.entrySet().iterator();

    while(it.hasNext()) {
        HashMap<String, String> resultsMap = new HashMap<>();
        Map.Entry pair = (Map.Entry)it.next();
        resultsMap.put("First Line", pair.getKey().toString());
        resultsMap.put("Second Line", pair.getValue().toString());
        listItems.add(resultsMap);
    }
    listDispGen.setAdapter(adapter);

主要问题是,当我运行应用程序时,项目未按正确顺序显示,例如: Art.1、Art.2....Art.9,但它们像 Art.3、Art.1、Art.3 等一样随机显示。

【问题讨论】:

  • HashMap 不维持秩序所以使用LinkedHashMap
  • 显然List&lt;HashMap&lt;String, String&gt;&gt; 没问题...但是你需要对其进行排序
  • 我该怎么做?我花了很多时间搜索互联网,但找不到任何答案!
  • stackoverflow.com/questions/2784514/… 但显然不是通过自定义属性,而是通过相同键的值
  • 感谢您的回复。

标签: android listview hashmap


【解决方案1】:

使用实现了SortedMap的TreeMap,它会保持插入的顺序

【讨论】:

  • 您好 Mohammed,感谢您抽出宝贵时间回答!在答案中提供链接以总结其内容或以其他方式说明您的观点时,如果该链接将来停止工作,这是一种很好的做法。此外,您提供的链接目前似乎是 404'd。欢迎加入社区!
  • 还有TreeMap如何作为Adapter源?没有使用 TreemMap 的内置适配器实现
  • 抱歉,我刚刚粘贴错了,而且没有内置适配器,因此您自己的构建将帮助您解决问题,请参阅此链接:stackoverflow.com/questions/32569709/… 这是上一个:@987654323 @
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-09
相关资源
最近更新 更多