从hashmap获取值并添加到listview中

时间:2012-02-03 08:25:35

标签: android hashmap android-listview

我有一个HashMap

HashMap<String, Integer> map = new HashMap<String, Integer>();

在地图中有一些价值。我希望逐个获取值并将其添加到listview中。地图中的值是

  

{Intent {cmp = Bluetooth / 300} = 300,Intent {cmp = Audio / 400} = 400,   意图{cmp = Video / 500} = 500,意图{cmp =显示/ 100} = 100,意图{   cmp = WiFi / 200} = 200}

列表视图中有两个textview。 我希望在listview中显示为

  

显示100

     

WiFi 200

     

蓝牙300。

现在我公开我的适配器类,它对你有帮助......

private class NewAdapter extends BaseAdapter {

        public NewAdapter(IntentTestingActivity intentTestingActivity,
                HashMap<String, Integer> map) {
        }

        @Override
        public int getCount() {
            Log.d(TAG, "Map size is: " + map.size());
            return map.size();
        }

        @Override
        public Object getItem(int arg0) {
            return null;
        }

        @Override
        public long getItemId(int arg0) {
            return 0;
        }

        @Override
        public View getView(int position, View view, ViewGroup parent) {

            View v = view;

            if (v == null) {

                LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

                v = vi.inflate(R.layout.class_name, null);

            }

            TextView className = (TextView) v.findViewById(R.id.name);
            TextView tagName = (TextView) v.findViewById(R.id.tag_name);

            Integer key_name;
            key_name = map.get(name);

            Log.d(TAG, "Complete map is: " + map.toString());

            // String tag = map.get(tagName).toString();
            // Integer name = map.get(className);

            String keyName;
            keyName = map.toString();
            Log.d(TAG, "KeyName is: " + map.get(tag));

            for (int i = 0; i < map.size(); ++i)
                Log.d(TAG, "Tag is: " + tag + " and Name is: " + name + " and Intent is: "+intent);

            HashMap<String, Integer> hashmap = map;
            for (Entry<String, Integer> e : hashmap.entrySet()) {
                String key = e.getKey();
                int value = e.getValue();

                Set<String>keyname = map.keySet();

            Log.d(TAG, "Key: " + key+ " Value: "+value);
            }


            className.setText(name.toString());
//           tagName.setText(keyName);
            return v;
        }

    }

其中name是一个String,其中包含所有keyValue,例如Display,Vedio等。

提前完成了......

3 个答案:

答案 0 :(得分:4)

您可以使用getter-setter创建一个POJO类,并将键和值设置为该类。

        List<POJO> list = new ArrayList<POJO>();
        Iterator<Entry<String, Integer>> iterator = map.entrySet().iterator();
        Entry< String, Integer> entry;
        while(iterator.hasNext()){
            POJO obj = new POJO();
            entry = iterator.next();
            Log.d("Key Value",entry.getKey()+" "+entry.getValue());
            obj.setKey(entry.getKey());
            obj.setValue(entry.getValue());
            list.add(obj);
        }

然后将此list设置为Adapter类。这将是一个简单的方法。

答案 1 :(得分:0)

构建一个使用HashMap和...

的自定义适配器
  

每当你想用ListView中的视图进行处理时   需要创建一个可以处理逻辑的自定义适配器   实现并在必要时将该信息传递给视图。

答案 2 :(得分:0)

好像你将两个值一起显示为单个字符串,所以你可以通过这样做来实现这一点:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.id.text1);
for(String key : map.keySet()){
    adapter.add(key + " " + map.get(key));
}
yourListView.setAdapter(adapter);