Autore Topic: Condividere ArrayList  (Letto 371 volte)

Offline pikkio

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
Condividere ArrayList
« il: 24 Luglio 2013, 10:09:57 CEST »
0
ciao a tutti,

ho un problema che più tento di risolvere più mi riesce difficile.

ho una classe (NON UN ACTIVITY) che estende la classe Java "Thread", che scarica da PostJson varie variabili (tra cui stringhe ecc.) nel metodo Run();
nello stesso metodo richiamo il costruttore di un Oggetto e gli assegno le variabili appena scaricate da Json così da creare un nuovo oggetto.
tutto questo all'interno di un ciclo for che per ogni Collection che ho nel Json mi crea un nuovo oggetto.

fin qui tutto ok.
Voglio inserire in un ArrayList chargePointList<Oggetto> tutti i nuovi oggetti che creo.
Codice (java[JAVA): [Seleziona]
public class GetChargePoint extends Thread{

       
        JSONObject obj;
        JSONArray jArray;
        InputStream inputStream = null;
        Handler handler;
       
        private ConnectionSource connectionSource;
       
        public ArrayList<ChargePoint_db> chargePointList = null;

        public GetChargePoint(Handler handler) {
                super();

                this.handler = handler;
                try {
                       
                } catch (MalformedURLException ex) {
                        // CODICE IRRAGGIUNGIBILE,L'URL OVVIAMENTE E' OK
                        ex.printStackTrace();
                }
        }


@Override
        public void run() {

                ...

                        for (int i = 0; i < jArray.length(); i++) {
                                try {
                                        JSONObject oneObject = jArray.getJSONObject(i);

                                        String name = oneObject.getString("Name");
                                        String address = oneObject.getString("Address");
                                        String description = oneObject.getString("Description");
                                        String ownerTelNumber = oneObject
                                                        .getString("OwnerTelNumber");
                                        String serialNumber = oneObject.getString("SerialNumber");
                                        String dateModified = oneObject.getString("DateModified");
                                        String id = oneObject.getString("Id");

                                        int pointModelId = oneObject.getInt("PointModelId");
                                        int maxNominalPowerKw = oneObject
                                                        .getInt("MaxNominalPowerkW");

                                        boolean hasAcceleratedCharge = oneObject
                                                        .getBoolean("HasAcceleratedCharge");

                                        boolean isInMaintenance = oneObject
                                                        .getBoolean("IsInMaintenance");
                                        boolean active = oneObject.getBoolean("Active");
                                        boolean isDeleted = oneObject.getBoolean("IsDeleted");
                                        boolean hasFastCharge = oneObject
                                                        .getBoolean("HasFastCharge");

                                        double latitude = oneObject.getDouble("Latitude");
                                        double longitude = oneObject.getDouble("Longitude");

                                        ChargePoint_db chargePoint = new ChargePoint_db(id,
                                                        serialNumber, name, description, address,
                                                        maxNominalPowerKw, hasAcceleratedCharge,
                                                        hasFastCharge, ownerTelNumber, false, pointModelId,
                                                        active, isInMaintenance, 0, dateModified, latitude,
                                                        longitude);

                                        chargePoint.save(repo);
                                        chargePointList.add(chargePoint);

...[/JAVA]

]



Il problema è che quando in un activity richiamo la classe che estende Thread e richiamo la ArrayList, quest'ultima torna null proprio come l'ho inizializzata.

COME FARE??    :'( :'( mi affido a voi ragazzi

grazie in anticipo

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Condividere ArrayList
« Risposta #1 il: 24 Luglio 2013, 10:20:15 CEST »
0
usa un'async task che ha il metodo "onPostExecute". In alternativa se il tuo oggetto è semplice, soluzione che a me piace di più, puoi pensare ad un service che passa il risultato in un intent (il tuo oggetto dovrà implementare Parcelable
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline pikkio

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
Re:Condividere ArrayList
« Risposta #2 il: 24 Luglio 2013, 10:28:14 CEST »
0
Avevo provato prima con un asyncTask ma creava più problemi che altro, probabilmente perchè sbagliavo qualcosa. ora riprovo :)
grazie