2017-02-15 5 views
-1

Ich habe eine Record-Klasse, die einige Daten aus API-Aufrufe gespeichert. Hier ist meine Record-Klasse.Verwenden Sie eine andere Klassendaten für eine Aktivität

public class Record { 
private int id; 
private int measure_id; 
private double weight; 
private double bmi; 
private int diastolic; 
private int systolic; 
private int temperature; 
private int heartRate; 
private String date; 
private int user_id; 

public Record() { 
    this.measure_id = 0; 
    this.heartRate = 0; 
    this.weight = 0; 
    this.diastolic = 0; 
    this.systolic = 0; 
    this.temperature = 0; 
    this.date = "0"; 
    this.bmi = 0; 
} 

public int getId() { 
    return id; 
} 

public void setMeasure_id(int measure_id) { 
    this.measure_id = measure_id; 
} 

public int getMeasure_id() { 
    return measure_id; 
} 

public double getWeight() { 
    return weight; 
} 

public void setWeight(double weight) { 
    this.weight = weight; 
} 

public int getTemperature(){ 
    return temperature; 
} 

public void setTemperature(int temperature){ 
    this.temperature = temperature; 
} 

public int getHeartRate(){ 
    return heartRate; 
} 

public void setHeartRate(int heartRate){ 
    this.heartRate = heartRate; 
} 

public int getDiastolic(){ 
    return diastolic; 
} 

public void setDiastolic(int diastolic){ 
    this.diastolic = diastolic; 
} 

public int getSystolic(){ 
    return systolic; 
} 

public void setSystolic(int systolic){ 
    this.systolic = systolic; 
} 

public double getBmi() { 
    return bmi; 
} 

public void setBmi(double bmi) { 
    this.bmi = bmi; 
} 

public String getDate() { 
    return date; 
} 

public void setDate(String date) { 
    this.date = date; 
} 
} 

Hier ist meine API-Aufrufklasse. Ich zeige nur den wichtigen Teil. Diese Klasse wird verwendet, um Daten vom Withings-Server abzurufen. Das ist Temperatur, Blutdruck und Herzfrequenz. Ich kann JSON-Datei und alle Daten erhalten.

private ArrayList convertData(String withings_records) 
{ 
    ArrayList<Record> records = new ArrayList<Record>(); 
    List<MeasureGroup> withings_measures = new ArrayList<>(); 
    String record_test = ""; 

    try { 

     JsonObject jsonObject = new JsonParser().parse(withings_records).getAsJsonObject(); 

     int status = jsonObject.get("status").getAsInt(); 

     if (status == 0) { 
      JsonElement body = jsonObject.get("body"); 
      withings_measures = gson.fromJson(body.getAsJsonObject(), 
        MeasureResult.class).measureGroups; 
     } 

     for(MeasureGroup measure : withings_measures) 
     { 
      Record record = new Record(); 

      record.setDate(Integer.toString(measure.date)); 

      for(Measure item : measure.measures) 
      { 
       record.setMeasure_id(measure.groupId); 

       if(item.type == MeasureType.DIASTOLIC_BLOOD_PRESSURE) 
       { 
        record.setDiastolic(item.getValue()); 
       } 
       if(item.type == MeasureType.HEART_PULSE) 
       { 
        record.setHeartRate(item.getValue()); 
       } 

       if(item.type == MeasureType.BODY_TEMPERATURE) 
       { 
        record.setTemperature(item.getValue()); 
       } 

      } 
      records.add(0,record); 

     } 
    } catch (Exception ex) { 
    } 

    return records; 
} 

Leider kann ich den Datensatz nicht in einer anderen Aktivitätsklasse verwenden. Der Wert, den ich bekommen habe, ist null. Ich denke, dass ich vielleicht den Konstruktorwert bekommen habe und keine Idee habe, wie man die Daten in einer anderen Tätigkeit wiederverwendet. Ich versuche Absicht zu verwenden, aber es ist nicht möglich. In meiner Haupttätigkeit versuche ich record.getTemperature() Funktion und andere Funktion zu verwenden, aber der Wert, den ich bekomme, ist Null. Vielen Dank im Voraus für diejenigen, die bereit sind, mit meinen Problemen zu helfen.

Antwort

0

Es ist sehr einfach. Wenn Sie sicher sind, dass die Werte in der ersten Klasse initialisiert sind, erstellen Sie ein statisches Objekt der ersten Klasse. Und mit diesem Objekt können Sie auf alle Variablen dieser Klasse zugreifen.

public static RecordClass recordObject; 
recordObject = new RecirdClass(); 

Wenn dies funktioniert, lass es mich wissen und akzeptiere die Antwort.

0

Um beliebige Daten zwischen zwei Aktivitäten zu übertragen, können Sie sie mit putExtra in intent übertragen. Angenommen, Sie rufen eine Beispielaktivität aus Ihrer aktuellen Aktivität auf. Sie haben eine ArrayList, die Sie an diese Absicht anhängen können. Ihr Datensatz sollte serialisierbar sein. Sie können putExtra wie folgt verwenden:

Intent mIntent = new Intent(this, Example.class); 
mIntent.putExtra(String key_name, ArrayList<Record> value); 

Dann in der Beispiel-Aktivität von Ihnen genannt Sie diesen Wert wie folgt verwendet werden:

ArrayList<Record> myList = (ArrayList<Record>) getIntent().getSerializableExtra(key_name); 
Verwandte Themen