| 

.NET C# Java Javascript Exception

2
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));

if (km <= 5) {

Toast.makeText(getApplicationContext(), "km: " + String.valueOf(roundDoubleValue(km,2)), Toast.LENGTH_SHORT).show();

initListview();
}
}
}

private void initListview() {
String[] columns = new String[]{
//cols
// db.KEY_ROWID,
db.KEY_ADRESSE,
db.KEY_PLZ,
db.KEY_ORT);

// displays
int[] to = new int[]{

R.id.tvAdresse,
R.id.tvPLZ,
R.id.tvOrt};
adapt = new SimpleCursorAdapter(
this, R.layout.item_ladesaeule,
crsG,
columns,
to,
0);
ListView listView = (ListView) findViewById(R.id.lvNear);
listView.setAdapter(adapt);
}

Kann mir jemand sagen, wo / worin mein Fehler liegt.
Danke !
News:
22.01.2020
Lukos 37 5
2 Antworten
0
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);


Ich hoffe, es hilft weiter.
23.01.2020
edvservice 1,4k 1 6
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 !
23.01.2020
Lukos 37 5

Stelle deine Android-Frage jetzt!