I want to show my json
response with a RecyclerView
but it's showing nothing! here is my json
:
[
{
"key": "test",
"vals": [
{
"Id": 0,
"Group": "test",
"Type": 0,
"Name": "ram",
"Value": "8",
"Sort": 2
},
{
"Id": 0,
"Group": "test",
"Type": 0,
"Name": "cpu",
"Value": "2.4",
"Sort": 1
}
]
},
{
"key": "mobile",
"vals": [
{
"Id": 0,
"Group": "mob",
"Type": 0,
"Name": "camera",
"Value": "8",
"Sort": 5
},
{
"Id": 0,
"Group": "mob",
"Type": 0,
"Name": "cpu",
"Value": "4",
"Sort": 0
},
{
"Id": 0,
"Group": "mob",
"Type": 0,
"Name": "Ram",
"Value": "4",
"Sort": 0
}
]
and here is my Java
code :
JSONObject jsonObject = new JSONObject(s);
JSONArray array = jsonObject.getJSONArray("key");
for(int i=0;i<array.length();i++) {
JSONObject o = array.getJSONObject(i);
ListItem_spec item = new ListItem_spec(o.getString("id"),o.getString("group"),o.getString("type"),o.getString("name"),o.getString("value"),o.getString("sort"),o.getString("key"));
listItems.add(item);
}
adapter = new MyAdapter_spec(listItems,getContext());
recyclerView.setAdapter(adapter);
How can i fix this?
You are trying to parse such structure:
{
"key": [
{
"id": 0,
"group": "test",
"type": 0,
"name": "ram",
"value": "8",
"sort": 2,
"key": "someKey"
},
...
]
}
But you have anouther json
structure. Try this code:
JSONArray array = new JSONArray(s);
for(int i=0; i < array.length(); i++) {
JSONObject valsObj = array.getJSONObject(i);
JSONArray valsArray = valsObj.getJSONArray("vals");
String key = valsObj.getString("Key");
for(int j=0; j < valsArray.length; j++) {
JSONObject o = valsArray.getJSONObject(j);
ListItem_spec item = new ListItem_spec(o.getString("Id"), o.getString("Group"), o.getString("Type"), o.getString("Name"), o.getString("Value"), o.getString("Sort"), key);
listItems.add(item);
}
}
adapter = new MyAdapter_spec(listItems, getContext());
recyclerView.setAdapter(adapter);
您是否已将布局管理器附加到回收者视图?
if you want to use Gson.. you can implement like this
Create Model
public class ListItem_spec{
private List<Vals> vals;
private String key;
public List<Vals> getVals (){
return vals;
}
public String getKey (){
return key;
}
}
public class Vals
{
private String Name;
private String Sort;
private String Value;
private String Type;
private String Id;
private String Group;
public String getName (){
return Name;
}
public String getSort (){
return Sort;
}
public String getValue (){
return Value;
}
public String getType (){
return Type;
}
public String getId (){
return Id;
}
public String getGroup (){
return Group;
}
}
then use Gson()
List< ListItem_spec > listItems = new Gson().fromJson(YOUR_JSON,new TypeToken<List<ListItem_spec>>(){}.getType());
adapter = new MyAdapter_spec(listItems, getContext());
recyclerView.setAdapter(adapter);
//dont forget to add notifyDataSetChanged();
adapter.notifyDataSetChanged();
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.