¿Cómo almacenar varios tipos de datos en una matriz?

Estoy buscando algo como un Array, pero necesita almacenar múltiples tipos de datos. Los tutoriales de Java de Oracle dicen: "Una matriz es un objeto contenedor que contiene un número fijo de valores de un solo tipo." Así que si no puedo usar una matriz para varios tipos, ¿qué uso?

Tengo este código que sólo agrega un marcador al mapa a la vez porque escribe sobre mi lat y valores largos cada bucle y sólo pasa el último al onPostExecute. Así que necesitaré algo como una matriz para pasar múltiples formas de información de contacto. Es decir estoy tirando de la localización de cada secuencia de JSON, pero necesito tirar y pasar el nombre y el número de teléfono también a la interfaz de usuario de este hilo de fondo.

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")); } 

Puede crear una matriz de su Custom-Class.

 public class YourCustomClass { String id; String name; double longitude; // and many more fields ... public YourCustomClass() { // constructor } public void setID(String id) { this.id = id; } public String getID() { return id; } // and many more getter and setter methods ... } 

Dentro de su clase personalizada puede tener tantos campos como desee donde puede almacenar sus datos, y luego usarlo así:

 // with array YourCustomClass [] array = new YourCustomClass[10]; array[0] = new YourCustomClass(); array[0].setID("yourid"); String id = array[0].getID(); // with arraylist ArrayList<YourCustomClass> arraylist = new ArrayList<YourCustomClass>(); arraylist.add(new YourCustomObject()); arraylist.get(0).setID("yourid"); String id = arraylist.get(0).getID(); 

También puede dejar que el método doInBackground de AsyncTasks (…) devuelva su Custom-class:

 protected void onPostExecute(YourCustomClass result) { // do stuff... } 

O una matriz:

 protected void onPostExecute(YourCustomClass [] result) { // do stuff... } 

O un ArrayList:

 protected void onPostExecute(ArrayList<YourCustomClass> result) { // do stuff... } 

Editar: Por supuesto, también puede crear una ArrayList de su objeto personalizado.

Puede utilizar una ArrayList .

 ArrayList<Object> listOfObjects = new ArrayList<Object>(); 

Y luego agregar elementos a ella.

 listOfObjects.add("1"); listOfObjects.add(someObject); 

O crear su propio objeto que encapsula todo el campo que usted necesita como

 public class LocationData { private double lat; private double longitude; public LocationData(double lat, double longitude) { this.lat = lat; this.longitude = longitude; } //getters //setters } 

Y luego agregar sus pares lat / long a un ArrayList del tipo LocationData

 ArrayList<LocationData> listOfObjects = new ArrayList<LocationData>(); listOfObjects.add(new LocationData(lat, longitude)); 

Debe considerar el uso del patrón de contenedores heterogéneos de typeafe .

Allí los datos se almacenan en un Map<Key<?>, Object> y el acceso al mapa se oculta detrás de métodos genéricos, que arrojan automáticamente el valor devuelto.

 public <T> T getObjectByKey(Key<T> key) return (T) map.get(key); 

Lo mismo para put .

  • Obtener la dirección del mapa o la dirección de ubicación en Android
  • ¿Es posible especificar el <uses-permission> mediante programación?
  • Google Maps Android Clustering OnCameraChangeListener () despreciado
  • Controles de zoom que no se muestran cuando se utiliza MapView con fill_parent
  • Android maps: No se pudo encontrar el estilo 'mapViewStyle' en el tema actual
  • GooglePlayServicesUtil.getErrorDialog es nulo
  • Compruebe si el usuario está en un bosque utilizando la ubicación
  • Cambio de color de los marcadores - Google Map V2 Android
  • Atributos Xml en Android Google Maps no funciona con AndroidStudio
  • Diferencia entre la API de Google Map Distance and Directions
  • OnMarkerClick no funciona (v2)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.