Представление списка, заполненное из файла JSON, возвращает только первые элементы после фильтрации категорий.

У меня есть представление списка, заполненное из файла JSON (поскольку мое приложение будет отключено) с использованием пользовательского адаптера представления списка. Представление списка фильтруется в соответствии с категорией, когда я запускаю свое приложение, лог-кот не дает мне ошибок, но представление списка заполняется только элементом каждой категории. Вот пример моего кода и файла JSON. Код немного беспорядочный, и это гигантский цикл.

    Intent intent = CategoryItemsActivity.this.getIntent();
    String category = (String) intent.getExtras().get("categoryName");
    int destinationId = intent.getExtras().getInt("destinationID");
    String feed = loadJSONFromAsset();
    try {
        JSONObject mJsonObj = new JSONObject(feed);
        JSONArray jsonArray = mJsonObj.getJSONArray("partners");
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            String name = jsonObject.getString("name");
            String categoryname = jsonObject.getString("category_name");
            Double lat = jsonObject.getDouble("lat");
            Double lng = jsonObject.getDouble("lang");
            String address = jsonObject.getString("address");
            int destid = jsonObject.getInt("destination_id");
            String thumbnail_image = jsonObject
                    .getString("thumbnail_image");
            compare.put(name, destid);
            hashmapNames.put(categoryname, name);
            hashmapAddress.put(name, address);
            thumbnailimages.put(name, thumbnail_image);
            latitudes.put(name, lat);
            longitudes.put(name, lng);
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
    for (Entry<String, Integer> entry1 : compare.entrySet()) {
        String key1 = entry1.getKey();
        int value1 = entry1.getValue();
        if (destinationId == value1) {
            for (Entry<String, String> entry2 : hashmapNames.entrySet()) {
                String key2 = entry2.getKey();
                String value2 = entry2.getValue();
                for (Entry<String, String> entry3 : hashmapAddress
                        .entrySet()) {
                    String key3 = entry3.getKey();
                    String value3 = entry3.getValue();
                    for (Entry<String, String> entry4 : thumbnailimages
                            .entrySet()) {
                        String key4 = entry4.getKey();
                        String value4 = entry4.getValue();
                        if (category.equals(key2) && key1.equals(value2)
                                && key3.equals(value2)
                                && key4.equals(value2)) {

                            setTitle(key2);
                            addresses.add(value3);
                            names.add(key1);
                            int resID = getResources().getIdentifier(
                                    value4,
                                    "drawable",
                                    CategoryItemsActivity.this
                                            .getPackageName());
                            images.add(resID);
                            rowItems = new ArrayList<RowItem>();
                            for (int x = 0; x < names.size(); x++) {
                                RowItem item = new RowItem(
                                        images.get(x), names.get(x),
                                        addresses.get(x));
                                rowItems.add(item);
                            }
                            CustomListViewAdapter adapter1 = new CustomListViewAdapter(
                                    this, R.layout.list_item_2, rowItems);
                            listview.setAdapter(adapter1);
                            listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                                @Override
                                public void onItemClick(
                                        AdapterView<?> parent, View view,
                                        int position, long id) {
                                    RowItem name = (RowItem) parent
                                            .getItemAtPosition(position);
                                    Intent i = new Intent(
                                            CategoryItemsActivity.this,
                                            PartnersInfo.class);
                                    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                                    i.putExtra("PartnerName",
                                            name.toString());
                                    startActivity(i);

                                }
                            });
                            for (Entry<String, Double> entry5 : longitudes
                                    .entrySet()) {
                                String key5 = entry5.getKey();
                                Double value5 = entry5.getValue();
                                for (Entry<String, Double> entry6 : latitudes
                                        .entrySet()) {
                                    String key6 = entry6.getKey();
                                    Double value6 = entry6.getValue();
                                    if (key5.equals(value2)
                                            && key6.equals(value2)) {

                                        Marker marker = map
                                                .addMarker(new MarkerOptions()
                                                        .position(
                                                                new LatLng(
                                                                        value6,
                                                                        value5))
                                                        .title(key5));
                                    }
                                }
                            }

                        }
                    }
                }

            }
        }

    }

}

Это мой файл JSON:

    {
"partners": [
    {
        "id": "1",
        "name": "Bunk Hostel",
        "location_name": "Beyoglu",
        "destination_id":"004",
        "category_name": "Accommodation",
        "thumbnail_image":"thumbnail",
        "address": "Bunk Hostel Address",
        "stringInfo": "this text is for bunk hostel",
        "lat":"41.034898",
        "lang":"28.982929",
        "url": "hikeastUrl"
    }, 
    {
        "id": "2",
        "name": "Accomo",
        "location_name": "Beyoglu",
        "destination_id":"004",
        "category_name": "Accommodation",
        "thumbnail_image":"thumbnail",
        "address": "sample Address",
        "stringInfo": "this text is for sample",
        "lat":"41.034898",
        "lang":"28.982929",
        "url": "hikeastUrl"
    }, 
    {
        "id": "3",
        "name": "Tamazra Tour",
        "location_name": "Beyoglu",
        "destination_id":"004",
        "category_name": "Tours",
        "address": "Tamazra Address",
        "stringInfo": "this text is for tamazra tour",
        "thumbnail_image": "thumbnail",
        "lat":"41.035527",
        "lang":"28.978282",
        "url": "hikeastUrl"
    },
    {
        "id": "4",
        "name": "new Tour",
        "location_name": "Beyoglu",
        "destination_id":"004",
        "category_name": "Tours",
        "address": "new Address",
        "stringInfo": "this text is for new tour",
        "thumbnail_image": "thumbnail",
        "lat":"41.035527",
        "lang":"28.978282",
        "url": "hikeastUrl"
    },
    {
        "id": "5",
        "name": "Arsen Lupen",
        "location_name": "Beyoglu",

        "destination_id":"004",
        "category_name": "Pubs",
        "address": "Arsen Lupen Address",
        "stringInfo": "this text is for Arsen Lupen",
        "thumbnail_image": "thumbnail",
        "lat":"41.034898",
        "lang":"28.982929",
        "url": "hikeastUrl"
    }, {
        "id": "6",
        "name": "Arsen new",
        "location_name": "Beyoglu",

        "destination_id":"004",
        "category_name": "Pubs",
        "address": "Arsen new Address",
        "stringInfo": "this text is for Arsen Lupen",
        "thumbnail_image": "thumbnail",
        "lat":"41.034898",
        "lang":"28.982929",
        "url": "hikeastUrl"
    },
    {
        "id": "7",
        "name": "Cukur Meyhane",
        "location_name": "Beyoglu",

        "destination_id":"004",
        "category_name": "Restaurants",
        "address": "Cukur Meyhane Address",
        "stringInfo": "this text is for Cukur Meyhane",
        "thumbnail_image": "thumbnail",
        "lat":"41.034898",
        "lang":"28.982929",
        "url": "hikeastUrl"
    },
    {
        "id": "8",
        "name": "new restaurant",
        "location_name": "Beyoglu",

        "destination_id":"004",
        "category_name": "Restaurants",
        "address": "new restaurant Address",
        "stringInfo": "this text is for Cukur Meyhane",
        "thumbnail_image": "thumbnail",
        "lat":"41.034898",
        "lang":"28.982929",
        "url": "hikeastUrl"
    },
    {
        "id": "9",
        "name": "Aponia Stores",
        "location_name": "Beyoglu",
        "destination_id": "004",
        "category_name": "Shops",
        "address": "Aponia Adress Address",
        "stringInfo": "this text is for Aponia",
        "thumbnail_image": "thumbnail",
        "lat":"41.034898",
        "lang":"28.982929",
        "url": "hikeastUrl"
    },
    {
        "id": "10",
        "name": "Artwalk",
        "location_name": "Beyoglu",
        "destination_id":"004",
        "category_name": "Activities",
        "address": "artwalk Address",
        "stringInfo": "this text is for artwalk",
        "thumbnail_image": "thumbnail",
        "lat":"41.034898",
        "lang":"28.982929",
        "url": "hikeastUrl"
    },
    {
        "id": "11",
        "name": "new actv",
        "location_name": "Beyoglu",
        "destination_id":"004",
        "category_name": "Activities",
        "address": "new actv Address",
        "stringInfo": "this text is for artwalk",
        "thumbnail_image": "thumbnail",
        "lat":"41.034898",
        "lang":"28.982929",
        "url": "hikeastUrl"
    },
    {
        "id": "12",
        "name": "Sample",
        "location_name": "",
        "destination_id": "004",
        "category_name": "Shops",
        "address": "Sample",
        "stringInfo": "this text is for Sample",
        "thumbnail_image": "thumbnail",
        "lat":"41.034898",
        "lang":"28.982929",
        "url": "hikeastUrl"
    }


]
}

person stainlessbaby    schedule 18.06.2014    source источник
comment
Почему бы вам не создать класс Partner с полями id, name, location_name и т. д. и использовать List‹Partner› для хранения значений вместо того, чтобы иметь более одного HashMap?   -  person nnesterov    schedule 18.06.2014
comment
Мне нужно было сравнить разные типы файлов с разными объектами. Все файлы не содержат только идентификатор, имя, имя_местоположения.   -  person stainlessbaby    schedule 18.06.2014
comment
Я не понимаю ваш код. но посмотрите, сможете ли вы найти что-нибудь полезное в этом ответе: Как создать JSON в Android   -  person M D P    schedule 18.06.2014