Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在android中循环json?_Java_Android - Fatal编程技术网

Java 如何在android中循环json?

Java 如何在android中循环json?,java,android,Java,Android,下面是一个json示例。我已经为我的列表适配器创建了不同的xml布局,与人的状态有关,比如他是活动的还是不活动的等等。每个布局包含不同的信息。当我运行代码时,所有数据都显示在json中最后一个状态的布局中。例如,如果我运行上面的json,“state:active”也出现在非活动布局中。如何在不同的布局中显示它们?我应该为每个状态使用不同的适配器吗 { "contacts":[ { "state":"active", "name"

下面是一个json示例。我已经为我的列表适配器创建了不同的xml布局,与人的状态有关,比如他是活动的还是不活动的等等。每个布局包含不同的信息。当我运行代码时,所有数据都显示在json中最后一个状态的布局中。例如,如果我运行上面的json,“state:active”也出现在非活动布局中。如何在不同的布局中显示它们?我应该为每个状态使用不同的适配器吗

{  
   "contacts":[  
      {  
         "state":"active",
         "name":"xxxx",
         "email":"xxxx@gmail.com",
         "address":"xx-xx-xxxx,x - street, x - country",
         "gender":"male"
      },
      {  
         "state":"inactive",
         "name":"Jyyyy",
         "email":"johnny_depp@gmail.com",
         "address":"xx-xx-xxxx,x - street, x - country",
         "gender":"male"
      }
   ]
}
if(state.equals(“active”)){
ListAdapter=new SimpleAdapter(SecondActivity.this,oslist,R.layout.list_sec,
新字符串[]{TAG_NAME,TAG_con,TAG_API,TAG_TEAM1,TAG_TEAM2,BAT_NAME,BAT_DESC,BOWL_NAME,BOWL_DESC,TAG_MATCHID},
新int[]{R.id.name、R.id.conn、R.id.api、R.id.team1、R.id.team2、R.id.batteam、R.id.batdesc、R.id.bowlteam、R.id.bowldesc、R.id.full});
list.setAdapter(适配器);
list.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//Object obj=parent.getItemAtPosition(位置);
所选字符串=((TextView)view.findViewById(R.id.full)).getText().toString();
//Log.v(“url”,“创建视图…”+名称);
//在选择单个列表项时启动新活动
Intent i=新Intent(getApplicationContext(),Four.class);
//向新活动发送数据
i、 添加标志(意图、标志、活动、清除、顶部);
i、 设置标志(意图、标志、活动、新任务);
i、 putExtra(“id3”,选中);
星触觉(i);
}
});
}else if(状态等于(“保持”)){
ListAdapter=new SimpleAdapter(SecondActivity.this、oslist、R.layout.list\u预览、,
新字符串[]{TAG_NAME,TAG_con,TAG_API,TAG_TEAM1,TAG_TEAM2},
新的int[]{R.id.name,R.id.conn,R.id.api,R.id.team1,R.id.team2});
list.setAdapter(适配器);
}
if(state.equals(“非活动”)){
ListAdapter=new SimpleAdapter(SecondActivity.this,oslist,R.layout.list\u stump,
新字符串[]{TAG_NAME,TAG_con,TAG_API,TAG_TEAM1,TAG_TEAM2,BAT_NAME,BAT_DESC,BOWL_NAME,BOWL_DESC,TAG_FLAGA,TAG_FLAGB},
新的int[]{R.id.name,R.id.conn,R.id.api,R.id.team1,R.id.team2,R.id.batteam,R.id.batdesc,R.id.bowlteam,R.id.bowldesc,R.id.flaga,R.id.flagb});
}

我想您应该循环
JSONArray
,如果是这样的话:

if (state.equals("active")) {

    ListAdapter adapter = new SimpleAdapter(SecondActivity.this, oslist, R.layout.list_sec,
            new String[]{TAG_NAME, TAG_COUN, TAG_API, TAG_TEAM1, TAG_TEAM2, BAT_NAME, BAT_DESC, BOWL_NAME, BOWL_DESC, TAG_MATCHID},
            new int[]{R.id.name, R.id.coun, R.id.api, R.id.team1, R.id.team2, R.id.batteam, R.id.batdesc, R.id.bowlteam, R.id.bowldesc, R.id.full});

    list.setAdapter(adapter);
    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            //  Object obj = parent.getItemAtPosition(position);

            String selected = ((TextView) view.findViewById(R.id.full)).getText().toString();

            //   Log.v("url", "Creating view..." + name);
            // Launching new Activity on selecting single List Item
            Intent i = new Intent(getApplicationContext(), Four.class);
            // sending data to new activity
            i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            i.putExtra("id3", selected);

            startActivity(i);
        }
    });

} else if (state.equals("hold")) {
    ListAdapter adapter = new SimpleAdapter(SecondActivity.this, oslist, R.layout.list_preview,
            new String[]{TAG_NAME, TAG_COUN, TAG_API, TAG_TEAM1, TAG_TEAM2},
            new int[]{R.id.name, R.id.coun, R.id.api, R.id.team1, R.id.team2});
    list.setAdapter(adapter);
}

if (state.equals("inactive")) {
    ListAdapter adapter = new SimpleAdapter(SecondActivity.this, oslist, R.layout.list_stump,
            new String[]{TAG_NAME, TAG_COUN, TAG_API, TAG_TEAM1, TAG_TEAM2, BAT_NAME, BAT_DESC, BOWL_NAME, BOWL_DESC, TAG_FLAGA, TAG_FLAGB},
            new int[]{R.id.name, R.id.coun, R.id.api, R.id.team1, R.id.team2, R.id.batteam, R.id.batdesc, R.id.bowlteam, R.id.bowldesc, R.id.flaga, R.id.flagb});
}
JSONObject obj=新的JSONObject(jsonString);
JSONArray数组=obj.getJSONArray(“联系人”);

for(int i=0;iI看不到ArrayList抱歉..那应该是json。你需要实现一个自定义的
适配器
@XaverKapeller:你能再详细一点吗?别担心,我已经计划写一个答案了。我在循环方面没有问题..问题是我无法检查每个“状态”的条件。它始终采用json中的最终“状态”。
JSONObject obj = new JSONObject(jsonString);
JSONArray array = obj.getJSONArray("contacts");
for(int i=0;i<array.length();i++){
    JSONObject contact = array.getJSONObject(i);
    String state = contact.getString("state"); //Here you can get "state" for each contact
}