I am working on the json array loops to output the data so I can store them in the EmailAddressData
list.
I have got a problem with this line under the loops:
emailAddresses = new EmailAddressData(firstname + "", email + "", url);
It will overwritten the data each time I fetch it and store it. I dont know what other ways I could use to store the data.
It will only work if I use this:
EmailAddressData[] emailAddresses = { new EmailAddressData("mark", "example1@gmail.com", url), new EmailAddressData("chris", "chris0@gmail.com", url), new EmailAddressData("vik", "vikey1234@gmail.com", url) };
Here is the code:
getContacts = extras.getString("getcontacts"); //loops for each array... try { JSONArray jsonArray = new JSONArray(getContacts); if (jsonArray.length() > 0) { for (int i = 0; i < jsonArray.length(); i++) { JSONObject json = jsonArray.getJSONObject(i); String firstname = json.getString("firstname"); String lastname = json.getString("lastname"); String email = json.getString("email"); String url = json.getString("url"); emailAddresses = new EmailAddressData(firstname + "", email + "", url); } } } catch (JSONException e) { e.printStackTrace(); }
Here is the EmailAddressData class:
public class EmailAddressData { private String name; private String emailAddress; private String userProfileImgUrl; public EmailAddressData(String name, String address, String imgUrl) { this.name = name; emailAddress = address; userProfileImgUrl = imgUrl; } public String getName() { return name; } public String getEmail() { return emailAddress; } public String getUserProfileImgUrl() { return userProfileImgUrl; } }
Could you please show me an example of what is the proper way I could use to store the data into the EmailAddressData
list?
Thank you.
Advertisement
Answer
If I understand the problem correctly. Declare a list and store all objects inside it
getContacts = extras.getString("getcontacts"); List<EmailAddressData> list = new ArrayList<>(); //loops for each array... try { JSONArray jsonArray = new JSONArray(getContacts); if (jsonArray.length() > 0) { for (int i = 0; i < jsonArray.length(); i++) { JSONObject json = jsonArray.getJSONObject(i); String firstname = json.getString("firstname"); String lastname = json.getString("lastname"); String email = json.getString("email"); String url = json.getString("url"); emailAddresses = new EmailAddressData(firstname + " " + lastname, email, url); list.add(emailAddresses); } } } catch (JSONException e) { e.printStackTrace(); }
Edit: if you want to store them in an array, use this:
getContacts = extras.getString("getcontacts"); //loops for each array... try { JSONArray jsonArray = new JSONArray(getContacts); EmailAddressData[] array = new EmailAddressData[jsonArray.length()]; if (jsonArray.length() > 0) { for (int i = 0; i < jsonArray.length(); i++) { JSONObject json = jsonArray.getJSONObject(i); String firstname = json.getString("firstname"); String lastname = json.getString("lastname"); String email = json.getString("email"); String url = json.getString("url"); array[i] = new EmailAddressData(firstname + " " + lastname, email, url); } } } catch (JSONException e) { e.printStackTrace(); }