Android 在ListView的适配器中使用什么数据结构来保持项目顺序

Android 在ListView的适配器中使用什么数据结构来保持项目顺序,android,listview,hashmap,Android,Listview,Hashmap,我试图找出为什么我的列表视图中的项目显示顺序错误。我认为这与迭代器有关,但我不确定 这是我的活动中的代码: //String Capitole String Articolul1 = getResources().getString(R.string.dispozitiiGeneraleArt_1); String Articolul2 = getResources().getString(R.string.dispozitiiGeneraleArt_2); Strin

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

这是我的活动中的代码:

 //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);
//字符串大写字母
String Articolul1=getResources().getString(R.String.dispozitigeGeneralLeart_1);
String Articolul2=getResources().getString(R.String.dispozitigeGeneralLeart_2);
String articoll3=getResources().getString(R.String.dispozitiigeneralleart_3);
//列表视图集
ListView listDispGen=(ListView)findViewById(R.id.DispozitiIgeneralList);
HashMap articolExplicatii=新HashMap();
Articolexplicatiii.put(“第1条,Articoll1”);
Articolexplicatiii.put(“第2条,Articolul2”);
Articolexplicatiii.put(“第3条,Articol3”);
List listItems=new ArrayList();
SimpleAdapter=new SimpleAdapter(此,listItems,R.layout.DispGeneralList,
新字符串[]{“第一行”,“第二行”},
新int[]{R.id.main_项,R.id.sub_项});
迭代器it=articolExplicatii.entrySet().Iterator();
while(it.hasNext()){
HashMap resultsMap=新HashMap();
Map.Entry对=(Map.Entry)it.next();
resultsMap.put(“第一行”,pair.getKey().toString());
resultsMap.put(“第二行”,pair.getValue().toString());
添加(resultsMap);
}
listDispGen.setAdapter(适配器);
主要问题是,当我运行应用程序时,项目的显示顺序不正确,如:
第1条、第2条……第9条,但它们是随机显示的,如第3条、第1条、第3条等。

使用实现的SortedMap,它将保持插入顺序

HashMap
不保持顺序,所以使用
LinkedHashMap
显然
列表
是可以的。。。但是你需要整理一下我该怎么做?我花了很多时间在网上搜索,但找不到任何答案!但很明显,不是按定制属性而是按同一钥匙的价值。谢谢你的回复。嗨,穆罕默德,谢谢你花时间回答!在回答中提供链接以总结其内容或以其他方式说明您的观点,以防将来链接停止工作时,这是一个很好的做法。此外,您提供的链接目前似乎是404'd。欢迎来到社区!还有TreeMap如何用作适配器源?没有使用TreeMapoh的内置适配器实现抱歉,我只是粘贴错误,并且适配器中没有bult,因此构建您自己的适配器将帮助您解决问题。请参见此链接:这是上一个链接: