[英]Android : getting multiple data in listview from server in another screen using Json
我正在嘗試將jsonobject放入下一個屏幕listview。 我可以在listview中獲取1個值,但是我有多個要獲取的值。 我能怎么做。
這是我從服務器獲取字符串的代碼:
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("Get_Friend_List", holder
.toString()));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
StringEntity se = new StringEntity(holder.toString());
se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE,
"application/json"));
httppost.setEntity(se);
HttpResponse response = httpclient.execute(httppost);
resp = response.toString();
String t = EntityUtils.toString(response.getEntity());
try {
JSONArray get_string1 = new JSONArray(t);
JSONObject get_string = null;
// Receive the JSON object from server
String userid = (String) get_string.get("UserId");
String totalusers = (String) get_string.get("TotalUsers");
String SessionID = (String) get_string.get("SessionID");
for (int i = 0; i < get_string1.length(); i++) {
get_string = get_string1.getJSONObject(i);
JSONObject contact = (JSONObject) get_string
.get("contacts-" + i);
String contact_id = (String) contact.get("UserId");
contact_username = (String) contact.get("UserName");
contact_status = (String) contact.get("Status");
Contacts.setStatus(contact_status, i);
Contacts.setUserName(contact_username, i);
}
} catch (JSONException e) {
e.printStackTrace();
System.out.println("--error--" + e.getMessage());
}
} catch (ClientProtocolException e) {
Log.e(TAG, e.toString());
} catch (IOException e) {
Log.e(TAG, e.toString());
}
}
這是我得到的來自服務器的響應。 但僅在列表視圖中存儲最后一個值。
Response from Server----{
"UserId": "1",
"TotalUsers": "4",
"contacts-0": {
"UserId": "3",
"UserName": "kumar",
"Status": "1"
},
"contacts-1": {
"UserId": "2",
"UserName": "rahul",
"Status": "1"
},
"contacts-2": {
"UserId": "4",
"UserName": "vlk",
"Status": "1"
},
"contacts-3": {
"UserId": "5",
"UserName": "vlk",
"Status": "1"
},
"SessionID": "39355"
}
Contacts.java
public class Contacts {
public static String[] status = new String[100];
public static String[] usrname = new String[100];
public static String getStatus(int i) {
return status[i];
}
public static String getUserName(int i) {
return usrname[i];
}
public static void setStatus(String status, int i) {
Contacts.status[i] = status;
}
public static void setUserName(String username, int i) {
Contacts.usrname[i] = username;
}
}
json字符串沒有數組類型。 在讀取contacts
對象之前,您需要調用has()
方法(以測試是否存在json屬性)。 另一個問題是Contacts
類型。 您必須定義Contact
類型並初始化List<Contact>
來存儲一個或多個聯系人。
看一下Contact類
public class Contact
{
private String userId;
private String userName;
private String status;
public Contact() {
userId="";
userName="";
status="";
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Override
public String toString() {
return "Contact{" + "userId=" + userId + ", userName=" + userName + ", status=" + status + '}';
}
}
並讀取/解析json
字符串的代碼。
JSONObject get_string = new JSONObject(t);
String userid = (String) get_string.get("UserId");
String totalusers = (String) get_string.get("TotalUsers");
String SessionID = (String) get_string.get("SessionID");
int i=0;
JSONObject obj=null;
/* Initialize the List<Contact> */
List<Contact> list=new ArrayList();
while(get_string.has("contacts-"+i))
{
obj=get_string.getJSONObject("contacts-" + i);
Contact contact=new Contact();
contact.setUserId(obj.getString("UserId"));
contact.setUserName(obj.getString("UserName"));
contact.setStatus(obj.getString("Status"));
list.add(contact);
i++;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.