我正在使用我的應用程序中的achartengine。他們添加了一個功能來處理空值,但爲了正確處理它們,您需要MathHelper.NULL_VALUE來代替空值。該圖需要List Double [](雙數組列表)以正確顯示數據。我的代碼循環遍歷遊標,填充雙精度列表,將雙精度列表轉換爲Double [],最後將Double []添加到我的List Double []中。Android替換我的雙列陣列表中的空值
我試着在循環中放入一個if/else語句,表示如果column_TEMP爲null,則cvalue = MathHelper.NULL_VALUE,但它在需要之前進行計算,結果非常災難性(失敗)。該圖沒有正確填充屏幕底部的單個小行,只顯示2個點而不是10個。它不能在MathHelper.NULL_VALUE之前進行計算,直到它位於List Double []中。我試圖找出一種方法,當它從Double []到List Double []時,更改空值。這是我目前使用的代碼。原因是它使null值在圖上顯示爲0。如果有一個空值,那麼使用較大數字的圖可能會相當混亂。你可以從幾百到幾百,再從幾百到幾百再到幾百。任何建議都非常感謝。
private List<Double[]> values;
private List<Double> cValue;
private Double[] Dvalue;
while (cursor.moveToNext()) {
try {
String cdate=null;
Double cvalue=null;
column_date = cursor.getColumnIndex(Provider.DATE);
column_value = cursor.getColumnIndex(Provider.TEMP);
cdate = cursor.getString(column_date);
cvalue = cursor.getDouble(column_value);
};
SimpleDateFormat curFormater = new SimpleDateFormat("yyyy/MM/dd");
Date dateObj = curFormater.parse(cdate);
if (dateObj.getTime() >= startDate.getTime() &&
dateObj.getTime() <= endDate.getTime()) {
SimpleDateFormat postFormater = new SimpleDateFormat("yyyy,MM,dd");
String dateObj1 = postFormater.format(dateObj);
SimpleDateFormat finalFormater = new SimpleDateFormat("yyyy,MM,dd");
Date dateObj2 = finalFormater.parse(dateObj1);
cDates.add(dateObj2);
cValue.add(cvalue);
}
} catch (ParseException e) {
e.printStackTrace();
}
}
dateValues = cDates.toArray(new Date[0]);
dates.add(dateValues);
Dvalue = (Double[]) cValue.toArray(new Double[0]);
values.add(Dvalue);
從理論上講,這是數組應該是什麼樣子,但我不知道如何輸入MathHelper.NULL_VALUE到現有陣列。
values.add(new double[] { 21.2, 21.5, 21.7, 21.5, 21.4, 21.4, 21.3, 21.1, 20.6, 20.3, 20.2,
19.9, 19.7, 19.6, 19.9, 20.3, 20.6, 20.9, 21.2, 21.6, 21.9, 22.1, 21.7, 21.5 });
values.add(new double[] { 1.9, 1.2, 0.9, 0.5, 0.1, -0.5, -0.6, MathHelper.NULL_VALUE,
MathHelper.NULL_VALUE, -1.8, -0.3, 1.4, 3.4, 4.9, 7.0, 6.4, 3.4, 2.0, 1.5, 0.9, -0.5,
MathHelper.NULL_VALUE, -1.9, -2.5, -4.3 });
編輯:
我想通了一個問題。在我while循環,我把這個代碼
Double d=MathHelper.NULL_VALUE;
String s=Double.toString(d);
Log.i(getClass().getSimpleName(), s);
而且記錄0.0低了下去我的ChartFactory的設置(外循環),我把 相同的代碼,並預期它返回1.7976931348623157E308。爲什麼 會使while循環返回0.0?
旁白:名爲'cvalue'和'cValue'在同一範圍內有變數是非常容易出錯。 –
我同意它通常是這樣,但它使我更容易從雙打到列表。我的大腦不正確我猜大聲笑。 –
Opy
「cValue」與「cValues」甚至「cValueList」如何? 'cValue'與'cValue'沒有任何關於它們的不同之處。 –