XY-Plot plottet keine Daten

nieselfriem

Bekanntes Mitglied
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 ;)

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
 

Ähnliche Java Themen

Neue Themen


Oben