【问题标题】:get the value from hashmap and add in listview从 hashmap 中获取值并添加到 listview
【发布时间】:2012-02-25 21:29:26
【问题描述】:

我有一个 HashMap

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

在地图中有一些价值。我想一一获取值并将其添加到列表视图中。地图中的值是

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

列表视图中有两个文本视图。 我想在列表视图中显示为

显示 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是一个包含所有keyValue的字符串,如Display、Vedio等。

提前谢谢...

【问题讨论】:

  • 我不明白所有这些 +1 和收藏夹?我错过了什么:$?

标签: android hashmap android-listview


【解决方案1】:

您可以使用 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 设置为您的适配器类。这将是一个简单的方法。

【讨论】:

  • 我已经做了一个自定义适配器。在 getview 方法中我写了 Integer key_name; key_name = map.get(name); className.setText(name.toString());其中 className 是 Textview。但是在listView 中只打印一个视频。但我想打印所有的名字。
  • 在我写的getview方法中?你写了什么?贴出代码。
  • 我提供了在我的 customAdapter 的 getView 方法中编写的代码。
  • map.get(name); 中您从哪里获得name
  • public void initMap() { String[] getPackate; getPackate = getResources().getStringArray(R.array.Class_Name); int len = getPackate.length; Log.d(TAG, "包装长度:" + len); for (int i = 0; i
【解决方案2】:

似乎您将两个值一起显示为单个字符串,因此您可以通过以下方式实现此目的:

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

【讨论】:

  • 我想提供答案,因为他将两个元素都显示为一个字符串。否则扩展到自定义适配器是他最好的选择
  • 我已经通过customAdapter在listView中打印了。但在 listView 中只显示 Vedio。但我想打印地图中的所有东西。在 getview 方法中编写的代码已经在评论下方给出。
  • 整数键名; key_name = map.get(name); className.setText(name.toString());其中 className 是 Textview。
【解决方案3】:

构建一个使用您的 HashMap 的自定义适配器和...

当你想对 ListView 中的视图进行处理时,你 需要创建一个自定义适配器来处理您的逻辑 实施并在必要时将该信息传递给视图。

【讨论】:

    猜你喜欢
    • 2018-10-14
    • 1970-01-01
    • 2021-06-05
    • 2013-06-20
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多