Hallo zusammen, ich bastele mir eine Umkreissuche und habe dabei das Problem, dass sich das ListView mit allen Daten füllt, anstatt nur mit den gesuchten innerhalb der if - Begrenzung. Die km-Berechnung(Haversine) funktioniert und gibt auch die richtigen Werte aus.
Hier der Code:
db = new Station_DB(Nearest.this); try { db.open(); } catch (SQLException e) { e.printStackTrace(); }
crsG = db.getData();
while (crsG.moveToNext()) { //Distance auslesen zum Ziel-Ort //ziel_IdDest = crsG.getString(0); ziel_LatDest = crsG.getString(6); ziel_LonDest = crsG.getString(7);
double km = entfernung(Double.valueOf(start_Breitengrad), Double.valueOf(start_Längengrad), Double.valueOf(ziel_LatDest), Double.valueOf (ziel_LonDest));
Das Problem liegt in der Methode initListView(). Diese Methode verwendet das komplette Recordset crsG. Sie müssen ein eigenes Recordset nur mit den gewünschten Daten aufbauen. An e8infachsten sollte das möglich sein, wenn z.B. die dahinterliegenden Daten (etwa auf der Datenbank oder von Webdienst) bereits gefiltert werden. Die Methode initListView sollte dann als Parameter des neue Recordset erhalten und sich nur um die Darstellung kümmern.
PSEUDCODE:
while (crsG.moveToNext()) { // Daten filtern und neues Dataset aufbauen crsNeu = …. } initListView(crsNeu);
… adapt = new SimpleCursorAdapter( this, R.layout.item_ladesaeule, crsNeu, columns, to, 0);
Vielen herzlichen Dank. Der Hinweis hat mir weitergeholfen. Ich habe es jetzt dahingehend gelöst, dass ich innerhalb der while-Schleife die Entfernungen mit einer Array-List sammle und ausgebe. Das funktioniert und liefert die entsprechenden Ergebnisse. Eine schöne Restwoche !