I'm looking for something like an Array, but it needs to store multiple data types. The Oracle Java tutorials says, "An array is a container object that holds a fixed number of values of a single type." So if I can't use an array for multiple types, what do I use?
I've got this code that only adds one marker to the map at a time because it writes over my lat and long values each loop and only passes the last to the onPostExecute. So I will need something like an array to pass multiple forms of contact info. ie I'm pulling the location from each JSON string, but I need to pull and pass the name & phone number too to the UI from this background thread.
try {
    String apples = endpoint.listContactInfo().execute().toString();
    JSONObject jObject = new JSONObject(apples);
    JSONArray jsonArr = jObject.getJSONArray("items");
     for(int i =0 ; i<jsonArr.length() ;i++ ){
         JSONObject jsonObj1 = jsonArr.getJSONObject(i);
                    // Storing each json item in variable
                    String id = jsonObj1.getString(TAG_ID);
                    String nameFirst1 = jsonObj1.getString(TAG_FIRSTNAME);
                    String nameLast1 = jsonObj1.getString(TAG_LASTNAME);
                    String emailAddress1 = jsonObj1.getString(TAG_EMAIL);
                    String streetAddress1 = jsonObj1.getString(TAG_ADDRESS);
                    String phone1 = jsonObj1.getString(TAG_PHONE);
                    //test to see if made it to string
                    Log.d("YOUR_TAG", "First Name: " + nameFirst1 + " Last Name: " + nameLast1);
                       address = coder.getFromLocationName(streetAddress1,5);
                        Address location1 = address.get(0);
                        // SET LAT LNG VALUES FOR MARKER POINT
                     lati = location1.getLatitude();
                         longi = location1.getLongitude();
                         Log.d("Location", "Location:" + lati + " " +  longi);
     }
    } catch (IOException e) {
    e.printStackTrace();
  } catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
      return (long) 0;
    }
         // ADD MARKER TO MAP UI
    protected void onPostExecute(Long result) {
        mMap.addMarker(new MarkerOptions()
        .position(new LatLng(lati, longi))
         .title("Hello world"));
    }  
                You can use an ArrayList.
ArrayList<Object> listOfObjects = new ArrayList<Object>();
And then add items to it.
listOfObjects.add("1");
listOfObjects.add(someObject);
Or create your own object that encapsulates all the field that you require like
public class LocationData {
   private double lat;
   private double longitude;
   public LocationData(double lat, double longitude) {
       this.lat = lat;
       this.longitude = longitude;
   }
   //getters
   //setters
}
and then add your lat/long pairs to an ArrayList of type LocationData
ArrayList<LocationData> listOfObjects = new ArrayList<LocationData>();
listOfObjects.add(new LocationData(lat, longitude));
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With