大家好,我有一个列表视图,其中值来自JSON。我的问题是在单击列表视图中的项目时,我需要获得单击的确切值。当我使用String str = ListView.getItemAtPosition(position).toString();它给出(Id =“1”,Category =“xxx”)。但我只需要那个类别价值。我怎么能这样做?
我的来源: lv.setOnItemClickListener(new AdapterView.OnItemClickListener(){
char
答案 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();