получить значение из hashmap и добавить в просмотр списка - PullRequest
3 голосов
/ 03 февраля 2012

У меня есть HashMap

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

на карте есть какое-то значение. Я хочу получить значение по одному и добавить его в список. Значение на карте:

{Intent {cmp = Bluetooth / 300} = 300, Intent {cmp = Audio / 400} = 400, Intent {cmp = Video / 500} = 500, Intent {cmp = Display / 100} = 100, Intent { cmp = WiFi / 200} = 200}

В просмотре списка есть два текстовых представления. И я хочу отображаться в виде списка как

Дисплей 100

WiFi 200

Bluetooth 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 - это просто строка, в которой хранится все значение ключа, например Display, Vedio и т. Д.

Спасибо заранее ...

Ответы [ 3 ]

4 голосов
/ 03 февраля 2012

Вы можете создать класс POJO с помощью getter-setter и установить ключ и значение для этого класса.

        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.Это будет простой способ.

0 голосов
/ 03 февраля 2012

Похоже, что вы показываете оба значения вместе как одну строку, так что вы можете достичь этого, просто выполнив следующие действия:

0 голосов
/ 03 февраля 2012

Создайте собственный адаптер, который использует ваш HashMap и ...

Всякий раз, когда вы хотите выполнить обработку с представлениями в ListView, вы нужно создать собственный адаптер, который будет обрабатывать вашу логику реализации и передать эту информацию в представлениях по мере необходимости.

...