2017-02-15 4 views
-1

私は、API呼び出しから得られたデータを保存したレコードクラスを持っています。 ここに私のレコードクラスです。アクティビティ上で別のクラスデータを使用する

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

ここは私のAPIコールクラスです。私は重要な部分だけを示します。このクラスは、Withingsサーバーからデータを取得するために使用されます。温度、血圧、心拍数です。私はjsonファイルとすべてのデータを取得することができました。

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

残念ながら、私は別のアクティビティクラス内でレコードを使用することはできません。私が得た値はゼロです。私はおそらくコンストラクタの価値を得て、別のアクティビティでデータを再利用する方法を知らないと思っています。私は意図を使用しようとしますが、それは不可能です。私の主な活動では、私はrecord.getTemperature()関数と他の関数を使用しようとしますが、私が得ている値はゼロです。 私の問題を助けてくれる人には、事前に感謝します。

答えて

0

非常に簡単です。値が最初のクラスで初期化されていることが確かな場合は、最初のクラスの静的オブジェクトを作成します。そのオブジェクトを使用すると、そのクラスのすべての変数にアクセスできます。

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

この問題が解決した場合は、私に連絡して回答を受け入れてください。

0

2つのアクティビティ間で任意の形式のデータを転送するには、putExtraを使用してインテントに転送できます。現在のアクティビティからExampleアクティビティを呼び出すとします。その目的にアタッチできるデータArrayListがあります。あなたのレコードはSerializableでなければなりません。あなたはこのようputExtraを使用することができます。

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

次に、あなたによって呼び出された例の活動に使用すると、以下のように、その値を使用することができます。

ArrayList<Record> myList = (ArrayList<Record>) getIntent().getSerializableExtra(key_name); 
関連する問題