我正在解析Expandable listview中的API数据 但在可扩展组中,我得到了同一个孩子。
解析数据后,格式错误。
请帮助我清楚这件事。
但我想用这种格式
1. Car
1. Audi
2. New
2. Animal
1. Dogs
2. Cat
请建议我错在哪里。
这是我的json
"status": 1,
"category": [
{
"id": 1,
"category_name_en": "car",
"category_name_ar": "car",
"description_en": "",
"description_ar": "",
"day": "monday,tuesday,wednesday,thursday,friday,saturday,sunday",
"status": "A",
"created_at": "Sep 4 2017 8:09 AM",
"updated_at": "Sep 4 2017 8:09 AM",
"sub_category": [
{
"id": 1,
"sub_category_name_en": "Audi",
"sub_category_name_ar": "Audi",
"sub_description_en": "",
"sub_description_ar": "",
"status": "A",
"created_at": "Sep 4 2017 8:10 AM",
"updated_at": "Sep 4 2017 8:10 AM"
},
{
"id": 4,
"sub_category_name_en": "New",
"sub_category_name_ar": "New",
"sub_description_en": "",
"sub_description_ar": "",
"status": "A",
"created_at": "Sep 4 2017 9:45 AM",
"updated_at": "Sep 4 2017 9:45 AM"
}
]
},
{
"id": 2,
"category_name_en": "Animal",
"category_name_ar": "Animal",
"description_en": "",
"description_ar": "",
"day": "monday,tuesday,wednesday,thursday,friday,saturday,sunday",
"status": "A",
"created_at": "Sep 4 2017 9:19 AM",
"updated_at": "Sep 4 2017 9:19 AM",
"sub_category": [
{
"id": 2,
"sub_category_name_en": "Dogs",
"sub_category_name_ar": "Dogs",
"sub_description_en": "",
"sub_description_ar": "",
"status": "A",
"created_at": "Sep 4 2017 9:20 AM",
"updated_at": "Sep 4 2017 9:20 AM"
},
{
"id": 3,
"sub_category_name_en": "Cat",
"sub_category_name_ar": "Cat",
"sub_description_en": "",
"sub_description_ar": "",
"status": "A",
"created_at": "Sep 4 2017 9:21 AM",
"updated_at": "Sep 4 2017 9:21 AM"
}
]
}
]
}
这是我的解析 这是我的Json。我使用了两个模型类ModelGroup和ModelChid。
ModelGroup LT = null;
ModelChild CT = null;
String response = result.getResult().toString();
JSONObject jsonRoot = new JSONObject(response);
JSONArray jsonArray = jsonRoot.getJSONArray("category");
for (int i = 0; i < jsonArray.length(); i++) {
LT= new ModelGroup();
JSONObject jsonObject = jsonArray.getJSONObject(i);
LT.setCat_name(jsonObject.getString("category_name_en"));
// LT.setCat_id(jsonObject.getString("id"));
modelgroup.add(LT);
JSONArray jsonArray1 = jsonObject.getJSONArray("sub_category");
for (int j = 0; j < jsonArray1.length(); j++) {
CT = new ModelChild();
JSONObject jsonObject2 = null;
jsonObject2 = jsonArray1.getJSONObject(j);
CT.setSub_category_name_en(jsonObject2.getString("sub_category_name_en"));
}
//get(i).get(i).add(CT);
modelchild.add(CT);
ListChildXXXXXXXXX.add(modelchild);
}
这是我的适配器
public class ExpandableAdpeter extends BaseExpandableListAdapter {
Context context;
ArrayList<ModelGroup> ListTerbaru;
ArrayList<ArrayList<ModelChild>> ListChildTerbaru;
int count;
public ExpandableAdpeter (Context context, ArrayList<ModelGroup>ListTerbaru, ArrayList<ArrayList<ModelChild>> ListChildTerbaru){
this.context=context;
this.ListTerbaru=ListTerbaru;
this.ListChildTerbaru=ListChildTerbaru;
// this.count=ListTerbaru.size();
// this.count=ListChildTerbaru.size();
}
@Override
public boolean areAllItemsEnabled()
{
return true;
}
@Override
public ModelChild getChild(int groupPosition, int childPosition) {
return ListChildTerbaru.get(groupPosition).get(childPosition);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
ModelChild childTerbaru = getChild(groupPosition, childPosition);
ViewHolder holder= null;
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_child, null);
holder=new ViewHolder();
holder.begdate1=(TextView)convertView.findViewById(R.id.tv_listchild);
holder.enddate1=(TextView)convertView.findViewById(R.id.tv_listchilds);
convertView.setTag(holder);
}
else{
holder=(ViewHolder)convertView.getTag();
}
holder.begdate1.setText(childTerbaru.getCat_id());
holder.enddate1.setText(childTerbaru.getSub_category_name_en());
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
return ListChildTerbaru.get(groupPosition).size();
}
@Override
public ModelGroup getGroup(int groupPosition) {
return ListTerbaru.get(groupPosition);
}
@Override
public int getGroupCount() {
return ListTerbaru.size();
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
ModelGroup terbaruModel = (ModelGroup) getGroup(groupPosition);
ViewHolder holder= null;
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_group, null);
holder=new ViewHolder();
holder.nama=(TextView)convertView.findViewById(R.id.tv_listtitle);
holder.alamat=(TextView)convertView.findViewById(R.id.tv_listtitles);
convertView.setTag(holder);
}
else{
holder=(ViewHolder)convertView.getTag();
}
holder.nama.setText(terbaruModel.getCat_name());
holder.alamat.setText(terbaruModel.getCat_id());
return convertView;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public boolean isChildSelectable(int arg0, int arg1) {
return true;
}
static class ViewHolder{
TextView begdate1, enddate1,nama, alamat, imageid;
}
}
答案 0 :(得分:0)
您可以尝试以下代码。有一个适配器类,对于使用pojo类的可扩展列表视图显示非常有用。
Rails.application.routes.draw do