2017-08-14 10 views
0

私はアプリにリアルタイムデータを表示する必要があります。グラフのライブラリとしてMPAndroidChartを選択しました。MPAndroidChartライブデータは初期境界なしには表示されません

しかし、エントリや設定軸の最小値と軸の最大値(x軸)を持つ初期データセットはありません。この設定ではグラフはスクロールできません。 (例では、x軸の際限なく起動し、良い作品)私はほとんどすでに例のすべてのコードをコピーし、それはまだ見えないのです。ここで

https://github.com/PhilJay/MPAndroidChart/blob/master/MPChartExample/src/com/xxmassdeveloper/mpchartexample/RealtimeLineChartActivity.java

は一例である固定の最大/最小X Max min fixed chart

をここではデータは示されていない、バグの例である:No data

すべてがviewpagerに断片内にある:

ここでINITINGラインチャートのコードです。データセットを作成するための

line_chart.apply { 

     description.apply { 
     isEnabled = true 
     text = "Live chart" 
     } 

     setTouchEnabled(true) 

     isDragEnabled = true 
     setScaleEnabled(true) 
     setDrawGridBackground(false) 

     setPinchZoom(true) 


     data = LineData().apply { 
     setValueTextColor(Color.BLACK) 
     } 

     // THIS: 
//  data = LineData(dataset("Simple").apply { 
//  for (i in 1..10) { 
//   addEntry(Entry(i.toFloat(), i.toFloat())) 
//  } 
//  }) 

     legend.apply { 
     form = LINE 
     textColor = Color.BLACK 
     } 

     xAxis.apply { 
     textColor = Color.BLACK 
     setDrawGridLines(false) 
     setAvoidFirstLastClipping(true) 
     isEnabled = true 
     granularity = 5f 
     axisMinimum = 0f 
     axisMaximum = 20f 

     setValueFormatter { value, _ -> Date(value.toLong()).simpleSecondsFormat() } 
     } 

     axisLeft.apply { 
     textColor = Color.BLACK 

     // OR THIS: 
     //axisMinimum = 0f 
     //axisMaximum = 12f 
     setDrawGridLines(true) 
     } 

     axisRight.isEnabled = false 

     setVisibleXRangeMaximum(100f) 
    } 

コード:

.observeOn(AndroidSchedulers.mainThread()) 
     .doOnNext { Timber.d("Entry: $it, timestamp: ${it.timestamp}") } 
     .doOnNext { 

      line_chart.data.apply { 
      val dataSet = getDataSetByLabel(it.macAddress, true) ?: dataset(
       it.macAddress).also { addDataSet(it) } 

      addEntry(Entry(it.timestamp.toFloat(), it.energy), 
       getIndexOfDataSet(dataSet)) 

      notifyDataChanged() 
      } 
     } 
     .doOnNext { 
      line_chart.apply { 
      notifyDataSetChanged() 
      setVisibleXRangeMaximum(120f) 
      invalidate() 
      } 
     } 

ありがとう:

fun dataset(label: String): LineDataSet = LineDataSet(null, label).apply { 
    axisDependency = LEFT 
    color = Color.BLACK 
    setCircleColor(Color.RED) 
    lineWidth = 2f 
    circleRadius = 4f 
    fillAlpha = 65 
    fillColor = Color.RED 
    highLightColor = Color.GREEN 
    valueTextColor = Color.RED 
    valueTextSize = 9f 
    setDrawValues(true) 
} 

データRxJava2を使用して、店から来ています!

答えて

0

最初のスニペットから​​行を削除して、誤って修正された問題。

関連する問題