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