【发布时间】:2018-02-16 23:41:30
【问题描述】:
我正在从展开式列表视图中的 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;
}
}
【问题讨论】:
-
你创建了可扩展的适配器,你可以分享那个代码
-
我添加了适配器请检查@Anil
-
你得到的输出是什么
-
我要买车 -->1.New 2.cat , Animal-->1.New 2.Cat
-
R u 使用改造
标签: android json parsing expandablelistview