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

前端之家收集整理的这篇文章主要介绍了如何使用ArrayAdapter对在Android中添加的HashMap进行排序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个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;
}

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

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);

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

什么不是真的?

解决方法

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

猜你在找的Android相关文章