Problematik mit der Ausgabe von SQL Inhalten (ljava.lang)

R

-Rockbiest-

Neues Mitglied
0
Hallo,

ich (Laie, der sich seit 3 Tagen mit Android Studio auseinandersetzt) stehe vor dem Problem (welches vermutlich keines ist) einen Spinner zu befüllen. Ich stelle die Verbindung zu einer Tabelle auf einem Server her, speichere die Ergebnisse in einer ArrayList und möchte diese an einen Spinner übergeben, der die Ergebnisse dann anzeigen soll:


Code:
ArrayList<String[]> result = new ArrayList<String[]>();

try {
    con = connectionclass(un, pass, db, ip);        // Connect to database
    if (con == null) {
        z = "Prüfe deine Internetverbindung!";
    } else {
        Statement stat = con.createStatement();
        ResultSet rs = stat.executeQuery( "SELECT DISTINCT unternehmen_id, unternehmen_name FROM v_application_unternehmen ORDER BY unternehmen_name" );
        int columnCount = rs.getMetaData().getColumnCount();
        while(rs.next())
        {
            String[] row = new String[columnCount];
            for (int i=0; i <columnCount ; i++)
            {
                row = rs.getString(i + 1);
            }
            result.add(row);
        }
    }

} catch (Exception ex) {
    isSuccess = false;
    z = ex.getMessage();
}

if (isSuccess) {
} else{
    Toast.makeText(AuftraegeSuchenActivity.this, z, Toast.LENGTH_SHORT).show();
}

 // Drop Down Menu Mandanten
        Spinner spinner = (Spinner) findViewById(R.id.unternehmen);
//        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,R.array.unternehmen_array, android.R.layout.simple_spinner_item);
        ArrayAdapter<CharSequence> adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, result);

        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);


Die Ergebnisse, die ich im Spinner nun angezeigt bekomme, sind alle gleich lautend (ljava.lang.string;ff04b92 - etc.)
Wie schaffe ich es ihm zu sagen, dass er die unternehmen_namen anzeigt und die id des gewählten Unternehmen vorhält für das weitere Vorgehen?

Vorab vielen Dank!! :D
 
Zuletzt bearbeitet von einem Moderator:
Bearbeitet von: Kiwi++Soft - Grund: Bitte Code-Tags verwenden!
Hallo @-Rockbiest- willkommen auf Android Hilfe!

Du befindest dich hier im User-Vorstellungsbereich, und dieser ist sicher nicht für tiefgreifende Androidprogrammierung vorgesehen.
Dein Thread/Thema wird passend in den richtigen Bereich des Forums verschoben.
Ich hoffe dir wird geholfen, und du kannst auch anderen helfen.
Viel Spaß bei uns.

Gruß Nick Knight
 
  • Danke
Reaktionen: Miss Montage
Verzeihung :D
 
Du gibst die Namen der Objekte aus, die in der ArrayList vorhanden sind. In deinen Fall sind es Strings. Du muss aber den Inhalt ausgeben. Dafür muss Du den Adapter anpassen.
 
@markus.tullius Danke für deine Antwort. Ich habe es schon befürchtet, ich hatte den Fehler schon einmal an anderer Stelle. Ich weiß nur nicht so Recht, wie ich an das Problem ansetzen soll :-/
 
Was gibt dein Array result im Logcat aus, wenn du folgenden Code schreibst:

for(String res : result) {Log.d("Result","Result: "+result); }

Zwei Möglichkeiten: i) Dort steht das gleiche, wie in der Liste. Dann schau mal nach, was in der Datenbank im Server steht. Ich befürchte, du schreibst die falschen Werte in die Datenbank. Irgendwo bevor du die Daten dort reinschreibt, gibt es eine Methode toString(). Wenn sie nicht überschrieben ist, gibt sie meist die Referenz des Objekt als String zurück.
ii) Du muss ein eigenen Adapter bauen.
Aber ich glaube, der erste Fall trifft zu.
 
Hallo,

du hattest Recht. Also es ist wohl der erste Grund.
Die Frage ist nur wo der Fehler zu finden ist.

Code:
 ArrayList<String[]> result = new ArrayList<String[]>();

        try {
            con = connectionclass(un, pass, db, ip);        // Connect to database
            if (con == null) {
                z = "Prüfe deine Internetverbindung!";
            } else {
                Statement stat = con.createStatement();
                ResultSet rs = stat.executeQuery("SELECT DISTINCT mandant_name FROM v_application_atg_anz ORDER BY mandant_name");
                int columnCount = rs.getMetaData().getColumnCount();
                while (rs.next()) {
                    String[] row = new String[columnCount];
                    for (int i = 0; i < columnCount; i++) {
                        row[i] = rs.getString(i + 1);
                    }
                    result.add(row);
                    //for(String[] res : result) {Log.d("Result","Result: "+result); }
                }
            }
 
Gotcha. :D

Der Fehler liegt in:
Code:
result.add(row);
Du schreibst ein Array (row) in eine Liste.

besser:
Code:
 ArrayList<String> result = new ArrayList<String>();
....
for(String myRow : row) {
    result.add(myRow);
}
 

Ähnliche Themen

M
  • mafoma63
Antworten
2
Aufrufe
734
swa00
swa00
B
Antworten
3
Aufrufe
1.269
swa00
swa00
R
Antworten
6
Aufrufe
970
swa00
swa00
Zurück
Oben Unten