簡體   English   中英

Android:使用Json從另一個屏幕的服務器在ListView中獲取多個數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM