2017-08-11 22 views
0

這裏是別人的代碼,我不知道如何使用內部類obj的參數,因爲我沒有發現其中使用功能:如何使用obj的參數androidplot

_ratePlot.setRangeValueFormat(new Format() { 

    @Override 
    public StringBuffer format(Object obj, @NonNull StringBuffer toAppendTo, 
           @NonNull FieldPosition pos) { 
     double val = ((Number) obj).doubleValue(); 
     double maxY = _ratePlot.getCalculatedMaxY().doubleValue(); 

     if (val == 0 || maxY < finalK) { 
      return new DecimalFormat("0").format(val, toAppendTo, pos); 
     } else if (maxY < finalK * finalK) { 
      if (val < 10 * finalK) 
       return new DecimalFormat("0.0 k").format(val/(1000), toAppendTo, pos); 
      else 
       return new DecimalFormat("0 k").format(val/(1000), toAppendTo, pos); 
     } else { 
      if (val < 10 * finalK * finalK) 
       return new DecimalFormat("0.0 M").format(val/(finalK * finalK), toAppendTo, pos); 
      else 
       return new DecimalFormat("0 M").format(val/(finalK * finalK), toAppendTo, pos); 
     } 
    } 

    @Override 
    public Object parseObject(String source, @NonNull ParsePosition pos) { 
     return null; 
    } 

}); 

我知道匿名內部類是在這裏定義的,但我找不到它在哪裏使用,我的意思是我不明白如何知道變量val的值是什麼。這裏是完整的源代碼: http://www.programcreek.com/java-api-examples/index.php?source_dir=i2p.android.base-master/app/src/main/java/net/i2p/android/router/stats/RateGraphFragment.java

+0

你在問什麼不清楚 - 你能詳細說明一下嗎? – Nick

+0

對不起,我是非母語的人。我想知道的是如何確定變量val的值是多少。 – Mayi

回答

0

我仍然不確定我明白你在問什麼,但我會嘗試提供一些關於您發佈代碼中發生的事情的一般信息。

實質上,_ratePlot.setRangeValueFormat(new Format()...)被設置自定義Format沿着邊緣的XYPlot呈現範圍內的值時使用。 Androidplot將調用這個匿名內部類的格式方法,在obj參數中傳入每個範圍值Number。您必須在此方法內將其重新設置爲Number,因爲Format類意味着通用。這是在方法的第一行完成:

double val = ((Number) obj).doubleValue();

一旦你有了這個值,這是由你來決定要如何進行格式化。該方法的其餘部分只是進行一些格式化並將格式化後的結果作爲StringBuffer返回。

+0

謝謝你的回答。如果我理解正確,obj的值,換句話說,Number的值取決於每個範圍值,對吧? – Mayi

+0

這是正確的:-) – Nick

+0

非常感謝! – Mayi

相關問題