Hallo zusammen,
um mir einen Graph in meiner App zusammen zu bauen habe ich mir das Beispiel hier durchgearbeitet und es funktioniert auch, wie es soll.
Toll dachte ich, und nun packst du das in deinen eignen Kontext. Und schon geht da nichts mehr. Das heißt, die Funktion wird zwar aufgerufen, hat aber offenbar keine Einfluss auf den Plot, so das er die Daten darstellen würde.
Bei mir sieht es wie folgt aus. Ich spreche über http eine api von mir an, die liefert ein Json, dass packe ich in eine Liste meiner Data class und wenn diese gefüllt ist, dann tue wundersame Dinge
Plotfunktion
Im Grunde ist diese nicht anders als das was das Beispiel aus Github macht. Nur, dass ich aus meine Datenklasse mit Hilfsfunktion eine ArrayListe<Number> mache. Mal angenommen, dass haut nicht hin, wäre das ein Grund, den ich verstehe. Aber selbst wenn ich feste Werte für die Daten, wie in dem Beispiel eintrage, wird der Graph nicht geplottet.
Was mache ich falsch bzw habe ich nicht verstanden?
VG georg
um mir einen Graph in meiner App zusammen zu bauen habe ich mir das Beispiel hier durchgearbeitet und es funktioniert auch, wie es soll.
Toll dachte ich, und nun packst du das in deinen eignen Kontext. Und schon geht da nichts mehr. Das heißt, die Funktion wird zwar aufgerufen, hat aber offenbar keine Einfluss auf den Plot, so das er die Daten darstellen würde.
Bei mir sieht es wie folgt aus. Ich spreche über http eine api von mir an, die liefert ein Json, dass packe ich in eine Liste meiner Data class und wenn diese gefüllt ist, dann tue wundersame Dinge
Java:
val listCall: Call<GartenTempResponse> = service.getAllTemps("temps_today")
listCall.enqueue(object : Callback<GartenTempResponse> {
override fun onResponse(
call: Call<GartenTempResponse>,
response: Response<GartenTempResponse>?
) {
if (response!!.isSuccessful) {
val tempList: GartenTempResponse? = response.body()
val url = call.request().url()
val repsone_text = response.body()
val responseCode = response.code()
var laenge = tempList?.temperaturen?.size
val maxTemps = tempList?.let { CalcAggreateTemp(it) }?.calcMaxTemps()
val minTemps = tempList?.let { CalcAggreateTemp(it) }?.calcMinTemps()
val avgTemps = tempList?.let { CalcAggreateTemp(it) }?.calcAvgTemps()
if (tempList != null) {
setXYPlot(tempList) //Plotten von Daten in einem Graph --> kein Plot der Daten
setRecyclerView(tempList) //Darstellung von Temperaturen und Zeit in einer Tabelle -->Funktioniert wunderbar
Plotfunktion
Im Grunde ist diese nicht anders als das was das Beispiel aus Github macht. Nur, dass ich aus meine Datenklasse mit Hilfsfunktion eine ArrayListe<Number> mache. Mal angenommen, dass haut nicht hin, wäre das ein Grund, den ich verstehe. Aber selbst wenn ich feste Werte für die Daten, wie in dem Beispiel eintrage, wird der Graph nicht geplottet.
Java:
private fun setXYPlot(tempList: GartenTempResponse) {
var formatingTools = FormatingTools()
val domainLabels = formatingTools.dateTimesListToArray(tempList.temperaturen)
val series1: XYSeries = SimpleXYSeries(formatingTools.temps1ListToArray(tempList.temperaturen), SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, "Aussen")
val series2: XYSeries = SimpleXYSeries(formatingTools.temps2ListToArray(tempList.temperaturen), SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, "Innen")
val series1Format = LineAndPointFormatter(Color.BLUE, Color.BLACK,null, null)
val series2Format = LineAndPointFormatter(Color.RED, Color.BLACK,null, null)
series1Format.interpolationParams = CatmullRomInterpolator.Params(10, CatmullRomInterpolator.Type.Centripetal)
series2Format.interpolationParams = CatmullRomInterpolator.Params(10, CatmullRomInterpolator.Type.Centripetal)
var plot = findViewById<com.androidplot.xy.XYPlot>(R.id.plot)
plot.addSeries(series1,series1Format)
plot.addSeries(series2,series2Format)
plot.graph.getLineLabelStyle(XYGraphWidget.Edge.BOTTOM).format = object : Format() {
override fun format(
obj: Any?,
toAppendTo: StringBuffer,
pos: FieldPosition
): StringBuffer {
val i = Math.round((obj as Number).toFloat())
return toAppendTo.append(domainLabels!![i])
}
override fun parseObject(source: String?, pos: ParsePosition): Any? {
return null
}
}
PanZoom.attach(plot)
}
XML:
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="500dp"
android:layout_marginStart="@dimen/card_view_marginStartEnd"
android:layout_marginEnd="@dimen/card_view_marginStartEnd"
android:layout_weight="5"
android:background="@android:color/white"
app:cardCornerRadius="@dimen/card_view_corner_radius"
app:cardElevation="@dimen/card_view_elevation">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical">
<com.androidplot.xy.XYPlot
android:id="@+id/plot"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
style="@style/APDefacto.Light"
app:title="Temperaturen"
app:domainTitle="domain"
/>
</LinearLayout>
</androidx.cardview.widget.CardView>
Was mache ich falsch bzw habe ich nicht verstanden?
VG georg