如何在Android中将多个对象作为JSON传递时过滤单个对象

时间:2016-09-13 19:28:39

标签: android listview

Debug Image Sample

大家好,我有一个列表视图,其中值来自JSON。我的问题是在单击列表视图中的项目时,我需要获得单击的确切值。当我使用String str = ListView.getItemAtPosition(position).toString();它给出(Id =“1”,Category =“xxx”)。但我只需要那个类别价值。我怎么能这样做?

我的来源:       lv.setOnItemClickListener(new AdapterView.OnItemClickListener(){

char

2 个答案:

答案 0 :(得分:2)

将其解析为json,并根据您的情况提取所需的数据:

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View view, int position,
                                long itemId) {

            String myJsonString  = lv.getItemAtPosition(position).toString();

            JSONObject json = new JSONObject(myJsonString);
            String selectedcity = json.getString("Category");
            Intent i = new Intent(CitySelection.this,MainActivity.class);
            i.putExtra("SelectedCity",selectedcity);
            startActivity(i);

        }
    });

答案 1 :(得分:1)

避免使用json作为字符串的workink,而是创建对象(DTO)来表示它。所以你有两种方法可以做,第一种方法是创建json内容的JsonObject:

JSONObject j = new JSONObject(json);
json.getString("Category");

第二个(也是最推荐的),创建一个dto:

CityDto {
    Integer id;
    String category;
    ...
}

解析它:

CityDto dto = new ObjectMapper().parse(json, CityDto.java);

然后,只需调用dto.getCategory();