XY-Plottet keine Daten obwohl Funktion ausgeführt wird

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
 

nieselfriem

Bekanntes Mitglied
Der Code setzt eine ArrayList vom Typ Number ( int, fload ...) voraus
du hast aber eines vom Typ GartenTempResponse.
Das ist es leider nicht.

  1. Wandel ich GartenTempResponse in ArrayLists vom Typ Number um mithilfe von meine Funtkionen temps1ListToArray, temps2ListToArray und dateTimesListToArray um
  2. Habe ich einfach mal die Daten aus dem Beispiel statt meiner aus dem Datentyp GartenTempResponse inmeine Code eingefügt.
Java:
 val domainLabels = arrayOf<Number>(1,2,3,6,7,8,9,10,13,14);
        val series1Number = arrayOf<Number>(1,4,8,12,16,32,26,29,10,13);
        val series2Number = arrayOf<Number>(2,8,4,7,32,16,64,12,7,10);

        val series1 : XYSeries = SimpleXYSeries(Arrays.asList(* series1Number),SimpleXYSeries.ArrayFormat.Y_VALS_ONLY
            ,"Series 1");
        val series2 : XYSeries = SimpleXYSeries(Arrays.asList(* series2Number),SimpleXYSeries.ArrayFormat.Y_VALS_ONLY
            ,"Series 1");

        val series1Format = LineAndPointFormatter(Color.BLUE,Color.BLACK,null,null)
        val series2Format = LineAndPointFormatter(Color.DKGRAY,Color.LTGRAY,null,null)

        series1Format.setInterpolationParams(CatmullRomInterpolator.Params(10,
            CatmullRomInterpolator.Type.Centripetal))
        series2Format.setInterpolationParams(CatmullRomInterpolator.Params(10,
            CatmullRomInterpolator.Type.Centripetal))

und trotzdem wird nichts geplottet
 

Jw456

Top Contributor
Frage wird hier überhaupt die Instanz vom Widget gefundenen?
Java:
var plot = findViewById<com.androidplot.xy.XYPlot>(R.id.plot)

Wo bist du in einer Activity oder in einem Fragment?
In einer Activity sollte die Angabe in der Spitzen Klammer nicht nötig sein.

Warum benutzt du nicht Viewbinding?
Damit wird findViewById fast nicht mehr gebraucht.
 
Zuletzt bearbeitet:

Jw456

Top Contributor
Der Code von Github nutzt das
Java:
import kotlinx.android.synthetic.main.activity_main.*

Damit ist kein suchen mit findViewById notwendig.
Dafür musst du auch das plugin im Gradle einfügen.

Aber das ist leider auch veraltet deshalb Viewbinding.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N XY-Plot plottet keine Daten Android & Cross-Platform Mobile Apps 0
W Android Wieso kann ich keine ListView mehr zum Layout hinzufügen? Android & Cross-Platform Mobile Apps 1
W Android Kann keine ListView mehr in der MainActivtiy anzeigen, obwohl noch sehr viel Platz frei ist Android & Cross-Platform Mobile Apps 1
Dimax Android WebVieClient sendet keine Formulare Android & Cross-Platform Mobile Apps 1
J OnRatingBarChangeListener gibt keine Reaktion Android & Cross-Platform Mobile Apps 3
S Android kriege einfach keine HTTP Connection hin Android & Cross-Platform Mobile Apps 1
P Android JUnit Testprojekt warum keine Java Klassen Android & Cross-Platform Mobile Apps 1
A Wieso keine java - forum app Android & Cross-Platform Mobile Apps 4
S Android Eclipse erstellt keine main Activity Android & Cross-Platform Mobile Apps 4
K Android SQLite Query "WHERE _id in (X, Y, Z)" keine Daten Android & Cross-Platform Mobile Apps 6
P Android EditText zeigt keine Umlaute Android & Cross-Platform Mobile Apps 6
G keine TextView-Aktualisierung in der while-Schleife Android & Cross-Platform Mobile Apps 18
M Firebase RealtimeDatabase - Daten aus Queries in CSV File speichern Android & Cross-Platform Mobile Apps 1
W Background Service Daten verarbeiten/Schleife ect. Android & Cross-Platform Mobile Apps 1
R Android Daten speichern und anzeigen Android & Cross-Platform Mobile Apps 7
MiMa Daten vom Brustgurt bekommen? Android & Cross-Platform Mobile Apps 3
ruutaiokwu Android Daten von "Activity A" nach "Activity B" umleiten? Android & Cross-Platform Mobile Apps 13
P Daten bzw Objekte auf das Handy lokal speichern Android & Cross-Platform Mobile Apps 29
W Android Browser startet immer, bevor die Daten dafür geholt wurden Android & Cross-Platform Mobile Apps 15
J Android Server-Login Daten in der App sicherer hinterlegen? Android & Cross-Platform Mobile Apps 7
T Firestore Daten in Spinner Android & Cross-Platform Mobile Apps 0
L Android Daten von Webseite runterladen, die mit HTTP-Authentifizierung gesichert ist Android & Cross-Platform Mobile Apps 5
B Accelerometer daten umwandeln Android & Cross-Platform Mobile Apps 41
S Android Apk Daten auslesen Android & Cross-Platform Mobile Apps 6
G Android Daten in einer Datenbank speichern Android & Cross-Platform Mobile Apps 1
ATZENPOWER Android Probleme mit mobilen Daten via lte Android & Cross-Platform Mobile Apps 10
S Android Studio MySql Daten in Listview mit sub Item Android & Cross-Platform Mobile Apps 11
A Android Daten in der Cloud speichern (Google) Android & Cross-Platform Mobile Apps 1
K Unbekannte Menge von Daten (Strings oder Ints) an Activity übergeben Android & Cross-Platform Mobile Apps 0
M Anzeigen der Daten dauert zu lange - Progressdialog? Android & Cross-Platform Mobile Apps 5
K Android DialogFragment mit SimpleCursorAdapter: Auf Daten zugreifen? Android & Cross-Platform Mobile Apps 4
S Daten aus Android Gerät auslesen Android & Cross-Platform Mobile Apps 3
L Android Datei erstellen, Daten einspeichern und auslesen Android & Cross-Platform Mobile Apps 2
B Alle Daten gehen verloren, wenn die Displaysperre aktiviert wird? Android & Cross-Platform Mobile Apps 21
M Daten zwischen mehreren Activities Android & Cross-Platform Mobile Apps 2
M Daten zwischen Activities übergeben Android & Cross-Platform Mobile Apps 7
G Daten von einer Activity zur nächsten übergeben Android & Cross-Platform Mobile Apps 6
G Wie gebe ich dem DrawView die Daten mit? Android & Cross-Platform Mobile Apps 2
V App Daten in Java Applikation Android & Cross-Platform Mobile Apps 3
D Android Daten verwalten Android & Cross-Platform Mobile Apps 2
S Android binäre Daten zwischen Android und einem Java-Server Android & Cross-Platform Mobile Apps 5
M Android Von Smartphone auf Daten von Server zugreifen Android & Cross-Platform Mobile Apps 2
C Android Listen/Daten aus der SQLLite Datenbank darstellen Android & Cross-Platform Mobile Apps 2
L Android Einlesen und rausschreiben von Daten auf SD Android & Cross-Platform Mobile Apps 3
U Android Daten dauerhaft speichern? Android & Cross-Platform Mobile Apps 2
P Java ME benutzer daten speichern Android & Cross-Platform Mobile Apps 5
7 GPS-Daten auslesen auf Samsung SGH I900 Omnia Android & Cross-Platform Mobile Apps 3
X RMS - Will die Daten auf den PC kopieren Android & Cross-Platform Mobile Apps 3
B Daten in *.txt schreiben Android & Cross-Platform Mobile Apps 7
R Lesen und schreiben von Daten. Android & Cross-Platform Mobile Apps 2
K XDA Orbit: Auslesen der GPS Daten mit J2ME Android & Cross-Platform Mobile Apps 2
M Daten aus Jad-file auslesen Android & Cross-Platform Mobile Apps 2
O eingehende Daten speichern Android & Cross-Platform Mobile Apps 2

Ähnliche Java Themen

Neue Themen


Oben