如何使用ArrayAdapter对在Android中添加的HashMap进行排序

Ogu*_*han 6 android hashmap android-spinner

我有一个HashMap<String,String>静态方法,将此地图返回给Activity.

方法如下所示:

public static HashMap<String, String> getAll() {    
    HashMap<String, String> map = new HashMap<String,String>();

    map.put("ab", "value1");
    map.put("bc", "value2");
    map.put("de", "value3");

    return map;
}
Run Code Online (Sandbox Code Playgroud)

我想用旋转器来使用那个地图.所以活动看起来像这样:

List list = new ArrayList<String>();
HashMap<String, String> map = Constants.getAll();

for (String key : map.keySet()) {
    list.add(Constants.getAll().get(key).toString());
}

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spinTest = (Spinner)findViewById(R.id.spinTest);

spinTest.setOnItemSelectedListener(new OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        urlDebug.setText(list.get(arg2).toString());
    }

    public void onNothingSelected(AdapterView<?> arg0) {

    }
});

spinTest.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

当我试图运行我的应用程序时,没有任何问题.但是当我点击微调器时,我在getAll()方法中添加了未订购的项目.我的意思是,订单必须是ab - bc -de,但它是随机排序的.

什么不是真的?

jee*_*eet 6

在hashmap中,不维护插入顺序,因此可以先访问最后插入的项目.如果要保持插入顺序,请改用linkedhashmap.