Comment stocker plusieurs types de données dans un tableau?

Je cherche quelque chose comme un tableau, mais il doit stocker plusieurs types de données. Les didacticiels Oracle Java indiquent: "Un tableau est un objet conteneur qui contient un nombre fixe de valeurs d'un seul type". Donc, si je ne peux pas utiliser un tableau pour plusieurs types, qu'est-ce que j'utilise?

J'ai ce code qui n'ajoute qu'un marqueur à la carte à la fois car il écrit sur mes valeurs lat et longues chaque boucle et ne passe que le dernier sur OnPostExecute. Donc, j'aurai besoin de quelque chose comme un tableau pour passer plusieurs formes d'informations de contact. C'est-à-dire que je tire l'emplacement de chaque chaîne JSON, mais j'ai besoin de tirer et de passer le nom et le numéro de téléphone aussi à l'interface utilisateur de ce thread d'arrière-plan.

  • Comment configurer url sur WebView à partir d'un fichier de mise en page xml sur Android?
  • Problème de mise en page Android - largeurs relatives en pourcentage utilisant le poids
  • Comment puis-je faire le centre vertical du côlon dans TextView
  • Configuration du réseau émulateur Android
  • Pourquoi DialogFragment ne peut pas être une classe interne?
  • Comment répertorier tous les fichiers dans le téléphone Android en utilisant le shell AdB?
  • 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 “Comment stocker plusieurs types de données dans un tableau?”

    Vous pouvez créer un tableau de votre classe personnalisée.

     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 ... } 

    À l'intérieur de votre classe personnalisée, vous pouvez avoir autant de champs que vous voulez où vous pouvez stocker vos données, puis utilisez-le comme ça:

     // 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(); 

    Vous pouvez également laisser la méthode AsyncTasks doInBackground (…) renvoyer votre classe Custom:

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

    Ou un tableau:

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

    Ou un ArrayList:

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

    Edit: Bien sûr, vous pouvez également créer une ArrayList de votre objet personnalisé.

    Vous pouvez utiliser un ArrayList .

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

    Ensuite, ajoutez des éléments.

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

    Ou créez votre propre objet qui encapsule tout le domaine dont vous avez besoin comme

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

    Puis ajoutez vos paires lat / long à un ArrayList du type LocationData

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

    Vous devriez considérer l'utilisation du type de modèle de conteneur hétérogène .

    Les données sont stockées dans une Map<Key<?>, Object> et l'accès à la carte est caché derrière les méthodes génériques, qui émettent automatiquement la valeur de retour.

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

    Le même pour put .

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.