在Android中使用json数据实现多个微调器

时间:2014-05-21 13:55:42

标签: android json android-spinner

我想创建一个带有4个或5个不同级别的微调器的表单屏幕,应该是这样的:

大学:米尼奥大学 校园:Azurém
建筑物:Bloco B
楼层:1 房间:LID 1

此数据存储在我的数据库中,我通过我的网络服务访问它。 主要的问题是所有的微调器都是相互依赖的,我不知道如何实现它。我试图根据这个答案做一些事情[spinner selection defines choices for another spinner]

但是我的情况不同而且更复杂。我不知道是否应该获取所有数据一次,或者我是否应该根据我选择的内容进行查询。

修改    我做了一些更改,这是我从我的网络服务中获得的一个示例..

{
    "campuses":[
        {
            "id": "8",
            "name": "Azurém",
            "buildings": [
                {
                    "id": "10",
                    "name": "Bloco B"
                },
                {
                    "id": "11",
                    "name": "Bloco C"
                },
                {
                    "id": "12",
                    "name": "Escola de Ciências"
                },
                {
                    "id": "13",
                    "name": "Escola de Engenharia",
                    "rooms": [
                        {
                            "id": "14",
                            "name": "LID 1",
                            "floor": "1"
                        },
                        {
                            "id": "15",
                            "name": "LID 3",
                            "floor": "1"
                        }
                    ]
                }
            ]
        },
        {
            "id": "9",
            "name": "Gualtar"
        }
    ]
  }

我的问题现在是在客户端(android).. 我想我知道怎么做,但总是欢迎建议:)

新编辑:当前屏幕如下所示 - > Location Screen

提前致谢!

1 个答案:

答案 0 :(得分:0)

所以,这些类别中的每一个都是不同的旋转器(即大学是一个,校园是另一个,等等......)?

您的Web服务可以将每个大学作为JSON对象返回,并将所有大学作为封装对象返回。您可以将其映射到Java对象,然后在选择某些内容时进行魔术!像这样:

 {
   "universities": {
        "univ1" : [
            "campuses" : {
                "campus1", "campus2"
            }, 
            "buildings" : {
                "building1", "building2"
            },
            "floors" : {
                "floor1", "floor2"
            },
            "rooms" : {
                "room1", "room2"
            }
        ],
        "univ2" : [
            "campuses" : {
                "campus1", "campus2"
            }, 
            "buildings" : {
                "building1", "building2"
            },
            "floors" : {
                "floor1", "floor2"
            },
            "rooms" : {
                "room1", "room2"
            }
        ]
    }
}

当然,如果您的数据集非常大,那么您最好先查询大学并强制用户在查询其余数据之前先选择它。