如何使用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性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...