我有一个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.