我之前發佈了一個關於使用GraphView庫中的CustomFormatLabeler將時間顯示爲x標籤(https://stackoverflow.com/questions/21567853/using-customlabelformatter-to-display-time-in-x-axis)的問題。我仍然無法找到解決方案,所以我嘗試編輯GraphView庫。我試圖溶液這裏建議:Using dates with the Graphview libraryGraphView中的時間標籤
我修改:
public GraphViewData(double valueX, double valueY)
通過添加第三輸入變量(字符串valueDate)和被叫getTime方法(),它返回這個字符串值建議。然後我修改generateHorlabels如下圖所示:
private String[] generateHorlabels(float graphwidth) {
int numLabels = getGraphViewStyle().getNumHorizontalLabels()-1;
if (numLabels < 0) {
numLabels = (int) (graphwidth/(horLabelTextWidth*2));
}
String[] labels = new String[numLabels+1];
double min = getMinX(false);
double max = getMaxX(false);
for (int i=0; i<=numLabels; i++) {
Double temp = min + ((max-min)*i/numLabels);
int rounded =(int)Math.round(temp)-1;
if(rounded < 0){
labels[i] = " ";
}else{
if(graphSeries.size() > 0){
GraphViewDataInterface[] values = graphSeries.get(0).values;
if(values.length > rounded){
labels[i] = values[rounded].getTime();
}else{
labels[i] = " ";
}
}
}
}
return labels;
}
我不得不從弄圓,因爲我正在出界錯誤的可變減去1。這比自定義格式貼標機的效果更好,因爲水平標籤和實時標籤之間沒有延遲。然而,在大約600個數據點,
rounded
比的
values
長度更大,我得到的出界錯誤。有沒有人嘗試修改GraphView庫以顯示成功的時間?我對java和android編程很新,所以一些建議會很棒。謝謝閱讀。
什麼是你的graphSeries變量的數據類型的聲明?我假設它是GraphViewSeries,但沒有get()方法。這個答案不完整。 –
Hi Stealth Rabbi,原來的graphview庫聲明瞭一個私有的final List graphSeries;在頂部,所以get(0).values函數來自List類。我已經編輯了上述內容來澄清這一點。 –
user2218339