在活动上使用其他类数据

时间:2017-02-15 15:12:38

标签: java android api withings

我有一个记录类,它存储了一些从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()函数和其他函数,但我得到的值是零。 感谢那些愿意帮助解决我的问题的人。

2 个答案:

答案 0 :(得分:0)

这很简单。如果您确定在第一个类中初始化值,则创建第一个类的静态对象。使用该对象,您可以访问该类的所有变量。

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

答案 1 :(得分:0)

要在两个活动之间传输任何形式的数据,您可以使用putExtra将其传输到intent。假设您从当前活动中调用示例活动。您有一个数据ArrayList,您可以将其附加到该意图。您的记录应该是可序列化的。您可以像这样使用putExtra:

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

然后在您调用的Example活动中,您可以使用以下值:

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