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

3 Solutions collect form web for “¿Cómo almacenar varios tipos de datos en una matriz?”

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 .

  • android.view.inflateexception binario archivo xml línea # 6 error o inflar fragmento de clase
  • ¿Cómo utilizar MapView en android usando google map V2?
  • Google Map Lite en CardView
  • El logcat de Android está inundado con "W / API de Google Maps para Android: GLHudOverlay obsoleto; Draw (): no-op "
  • Manejo de eventos táctiles en SurfaceView sobre Maps API v2
  • Route-Me para Android
  • PlaceAutoCompleteFragment en android no muestra sugerencias y se cierra después de ingresar la primera letra
  • El primer lanzamiento de la Actividad con Google Maps es muy lento
  • Cómo hacer Google hacer en el centro cuando se utiliza doble Pulsar y pellizcar para acercar el androide?
  • Dibuja el camino de GoogleMap con 9patch
  • Obtener indicaciones para llegar con la API de Google Maps v2
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.