我已成功检索到某个点的所有数据,但我目前正在尝试在日期范围之间检索数据。我在指定范围时遇到问题。见下面的代码。我认为一切都很好,直到" dateRange.lowerEndpoint()= lowerDate;这是我不确定的地方。我很感激任何有助于理顺这一点的人。
public class GetDataAsync extends AsyncTask<String, Void, List> {
List<Value> dataValues = null;
@Override
protected List doInBackground(String... point) {
// Adjust these variables accordingly
final EmailAddress EMAIL_ADDRESS = CommonFactory.createEmailAddress("XXXX@gmail.com");
final String ACCESS_KEY = "XXXX";
final UrlContainer INSTANCE_URL = UrlContainer.getInstance("XXXX.appspot.com");
Range<Date> dateRange = null;
Date lowerDate = new Date(1398297720);
Date upperDate = new Date(1395273970);
dateRange.lowerEndpoint() = lowerDate; // <---- I know this is wrong. Not sure of correct code.
dateRange.upperEndpoint() = upperDate; // <---- I know this is wrong. Not sure of correct code.
final Server SERVER = ServerFactory.getInstance(INSTANCE_URL);
String pointName[] = point;
PointHelper pointHelper = HelperFactory.getPointHelper(SERVER, EMAIL_ADDRESS, ACCESS_KEY);
boolean pointExists = pointHelper.pointExists(pointName[0]);
List<Value> recordedValues = null;
if (pointExists) {
ValueHelper valueHelper = HelperFactory.getValueHelper(SERVER, EMAIL_ADDRESS, ACCESS_KEY);
recordedValues = valueHelper.getSeries(pointName[0], dateRange);
}
return recordedValues; }
@Override
protected void onPostExecute(List result) {
dataValues = result;
Value currentValue;
Double currentDouble;
for (int i = 0; i < dataValues.size(); i++) {
Log.e("Log", String.valueOf(dataValues.get(i)));
Value mValue = dataValues.get(i);
Double mDouble = mValue.getDoubleValue();
Date mDate = mValue.getTimestamp();
Log.e("Double Value", String.valueOf(mDouble));
Log.e("Timestamp", String.valueOf(mDate));
currentValue = dataValues.get(0);
currentDouble = currentValue.getDoubleValue();
}
} }
答案 0 :(得分:2)
在我看来,你想要:
Range<Date> dateRange = Range.closed(lowerDate, upperDate);
(假设您确实希望范围内包括较低日期和较高日期。)
另外,你说你知道dateRange.lowerEndpoint() = lowerDate;
是错误的,但如果有帮助我会解释它有什么问题:
dateRange
初始化为null
。您必须先实际创建一个对象,然后才能对其执行任何操作,因此即使可以调用方法来设置范围上的下端点和上端点(或指定字段),如果您不这样做,也无法执行此操作。首先创建对象。你会得到NullPointerException
。lowerEndpoint()
和upperEndpoint()
是方法。它们不是字段,您无法分配它们。Range
是不可变的类型。创建Range
后,无法更改。您似乎正在尝试使用它,就好像它是可变类型,您首先创建一个无范围的范围,然后将其更改为具有所需的属性。 Range
要求在创建时预先指定所有内容。