Android - MapView содержится в Listview

В настоящее время я пытаюсь разместить MapView в ListView. Кто-либо имел успех с этим? Это даже возможно? Вот мой код:

            ListView myList = (ListView) findViewById(android.R.id.list);
        List<Map<String, Object>> groupData = new ArrayList<Map<String, Object>>();

        Map<String, Object> curGroupMap = new HashMap<String, Object>();
        groupData.add(curGroupMap);
        curGroupMap.put("ICON", R.drawable.back_icon);
        curGroupMap.put("NAME","Go Back");
        curGroupMap.put("VALUE","By clicking here");

        Iterator it = data.entrySet().iterator();
        while (it.hasNext()) 
        {
            //Get the key name and value for it
            Map.Entry pair = (Map.Entry)it.next();
            String keyName = (String) pair.getKey();
            String value = pair.getValue().toString();

            if (value != null)
            {
                //Add the parents -- aka main categories
                curGroupMap = new HashMap<String, Object>();
                groupData.add(curGroupMap);

                //Push the correct Icon
                if (keyName.equalsIgnoreCase("Phone"))
                    curGroupMap.put("ICON", R.drawable.phone_icon);
                else if (keyName.equalsIgnoreCase("Housing"))
                    curGroupMap.put("ICON", R.drawable.house_icon);
                else if (keyName.equalsIgnoreCase("Website"))
                    curGroupMap.put("ICON", R.drawable.web_icon);
                else if (keyName.equalsIgnoreCase("Area Snapshot"))
                    curGroupMap.put("ICON", R.drawable.camera_icon);
                else if (keyName.equalsIgnoreCase("Overview"))
                    curGroupMap.put("ICON", R.drawable.overview_icon);  
                else if (keyName.equalsIgnoreCase("Location"))
                    curGroupMap.put("ICON", R.drawable.map_icon);
                else
                    curGroupMap.put("ICON", R.drawable.icon);

                //Pop on the Name and Value
                curGroupMap.put("NAME", keyName);
                curGroupMap.put("VALUE", value);
            }
        }

        curGroupMap = new HashMap<String, Object>();
        groupData.add(curGroupMap);
        curGroupMap.put("ICON", R.drawable.back_icon);
        curGroupMap.put("NAME","Go Back");
        curGroupMap.put("VALUE","By clicking here");

        //Set up adapter
        mAdapter = new SimpleAdapter(
                mContext,
                groupData,
                R.layout.exp_list_parent,
                new String[] { "ICON", "NAME", "VALUE" },
                new int[] { R.id.photoAlbumImg, R.id.rowText1, R.id.rowText2  }
        );

        myList.setAdapter(mAdapter); //Bind the adapter to the list 

Заранее спасибо за Вашу справку!!

11
задан Ryan 2 June 2010 в 20:15
поделиться

2 ответа

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

4
ответ дан 3 December 2019 в 00:43
поделиться

Во-первых, я не думаю, что одновременное отображение нескольких MapView будет работать. Документы MapActivity, в которых поддерживается только один для каждого процесса:

«Для каждого процесса поддерживается только один MapActivity. Одновременное выполнение нескольких MapActivities может вызвать непредвиденные и нежелательные помехи».

( http: // code. google.com/android/add-ons/google-apis/reference/index.html)

Это явно не говорит о том, что вы не можете иметь несколько MapView в MapActivity, но я думаю, что они будут мешать, поскольку ну, независимо от того, в какой родительской ViewGroup они входят.

Во-вторых, вы можете подумать об использовании API статических карт, чтобы получить простое изображение для включения в ListView - полноценный MapView может быть излишне тяжеловесным в любом case:

http://code.google.com / apis / maps / documentation / staticmaps /

Единственная проблема, с которой вы потенциально можете столкнуться, заключается в том, что API статических карт ограничивает использование "пользователем", что, вероятно, означает IP (для этого не требуется ключ API) и в мобильных сетях могут возникнуть проблемы с ограничением использования IP. Я не совсем уверен, как это закончится.

6
ответ дан 3 December 2019 в 00:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: