2017-03-18 4 views
0

Ich habe ein Problem mit meinem Algorithmus. Ich lösche die Position auf 0, aber mein Dataset ddint bewegt sich wie -1. Dann habe ich einen neuen Eintrag auf Position hinzufügen 25. Kontinuierliche dieses maked mein Projekt alway letzten Eintrag löschen und non stop Hinzufügen der Eintrag in Position 25.MPAndroidChart wie man den Datensatz in die Position -1 verschiebt, nachdem die Position 0 entfernt wurde

Hier Code:

private void addEntry() { 
    data = mChart.getData(); 
    if (set1 == null) { 
     set1 = createSet(); 
     data.addDataSet(set1); 
    } 
    int prog = 1; 
    for (int i = 0; i < prog; i++) { 
     float val = (float) (Math.random() * 2); 
     float high = (float) (Math.random() * 1) + 2f; 
     float low = (float) (Math.random() * 1) + 2f; 
     float open = (float) (Math.random() * 2) + 1f; 
     float close = (float) (Math.random() * 2) + 1f; 
     boolean even = i % 2 == 0; 
     data.addEntry(new CandleEntry(25, val + high, val - low, even ? val + open : val - open, 
       even ? val - close : val + close), 0); 
     data.notifyDataChanged(); 
     mChart.notifyDataSetChanged(); 
     mChart.setVisibleXRangeMaximum(25); 
     mChart.moveViewTo(data.getEntryCount() - 24, 2f, YAxis.AxisDependency.RIGHT); 
    } 
} 

private void removeLastEntry() { 
    CandleData data = mChart.getData(); 
    if (data != null) { 
     ICandleDataSet set = data.getDataSetByIndex(0); 
     if (set != null) { 
      Entry e = set.getEntryForIndex(0); 
      data.removeEntry(e, 0); 
      data.notifyDataChanged(); 
      mChart.notifyDataSetChanged(); 
      mChart.invalidate(); 
     } 
    } 
} 

Antwort

1

DataSet#getEntryForIndex(int index) gibt den Eintrag, der ist zuerst in der Backing-Array von Entry, die die Entry mit dem Minimum x Wert auf dem Diagramm sein kann oder nicht. Von javadoc:

Gibt das Entry-Objekt zurück, das am angegebenen Index (NOT xIndex) im Werte-Array gefunden wurde.

Ich vermute, Sie wollen tatsächlich so etwas wie die folgenden verwenden:

float xMin = dataSet.getXMin(); 
dataSet.remove(dataSet.getEntryForXPos(xMin); 

Siehe javadoc here.

Ihr Anwendungsfall ist jedoch ein wenig ungewöhnlich. Sie möchten, dass alle anderen Einträge "nach unten" verschoben werden, wenn Sie die Entry mit dem Mindestwert entfernen. Wenn Sie dies nur selten tun, ist es möglicherweise einfacher, einen neuen Datensatz zu erstellen. Bitte beachten Sie, dass es beim Hinzufügen von Entry zum Diagramm leicht ist, dass der Direktzugriff auf Entry und deren Entfernung nicht so gut unterstützt wird. Siehe folgende Anmerkung in the wiki

Bitte beachten Sie, dass diese Bibliothek offiziell nicht unterstützt durch die x-Position der Einträge in aufsteigender Weise Linechart Daten von einer Meldeliste nicht sortierte Zeichnung. Das unsachgemäße Hinzufügen von Einträgen kann zu einem korrekten Zeichnen führen, kann jedoch auch zu einem unerwarteten Verhalten führen.

+0

U hat mir dabei geholfen, danke – Rodriquez

+0

@Rodriquez Ich bin froh, dass es hilft! Viel Glück mit Ihrem Projekt! –

Verwandte Themen