1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. zblack, 16.11.2011 #1
    zblack

    zblack Threadstarter Gast

    Hallo Android Freunde,
    ich wollte eine txt Datei einlesen lassen und die Werte in den Spinner einfügen damit ich dann eins von den auswählen kann.
    Dazu habe ich folgende Klasse gebaut:
    Code:
    public class EinstellungenActivity extends Activity {
        private ArrayAdapter<CharSequence> adapter2;
        private Spinner reifenmarken;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.einstellungen);
    
            reifenmarken = (Spinner) findViewById(R.id.sr_marke);
            try{
                FileReader fileReader;
                String[] y = new String[40];
                fileReader = new FileReader("test.txt");
    
                BufferedReader bufferedReader = new BufferedReader(fileReader);
                String x = bufferedReader.readLine();
                int anz = 0;
    
                while (x != null) {
    
                    x = bufferedReader.readLine();
                    anz++;
                    y[anz] = x;
                }
                bufferedReader.close();
                adapter2 = new ArrayAdapter<CharSequence>(this,
                        android.R.layout.simple_spinner_item, y);
             adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                reifenmarken.setAdapter(adapter2);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
    
    bei der Ausführung wird kein Fehler ausgegeben aber der Inhalt der Datei wird im Spinner nicht angezeigt.
    MfG.
     
  2. Tom299, 16.11.2011 #2
    Tom299

    Tom299 Android-Experte

    ich hab mit CharSequence noch nie gearbeitet und weiß nicht, inwieweit das kompatibel mit deinem String-Array ist. aber wenn man ein String-Array nimmt, sollte man das auch in den Adapter stecken.

    also kannste zum Testen mal adapter2 = new ArrayAdapter<String> versuchen, vielleicht liegts ja daran.
     
  3. zblack, 16.11.2011 #3
    zblack

    zblack Threadstarter Gast

    naja, wenn ich einfach String [] x = {"fd", "fdkjfdkfjd", "fdkjfdkjfdkjfdkjgfhj"} nehme und dann den string x in den adapter einsetze
    also so:
    adapter2 = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, x); adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); reifenmarken.setAdapter(adapter2);

    dann funktioniert es. Wenn ich die Datei einlese, funktioniert es aber nicht
     
  4. swordi, 16.11.2011 #4
    swordi

    swordi Gewerbliches Mitglied

    das kommt mir irgendwie falsch vor

    du machst ein readline
    checkst auf null und machst gleich wieder ein readline

    somit wird die 1. zeile nie gelesen. ist das gewollt ?

    dazu wird auch in y[0] niemals was geschrieben. du beginnst nämlich mit 1
     
  5. Tom299, 16.11.2011 #5
    Tom299

    Tom299 Android-Experte

    also das anz++ muß hinter die zuweisung y[anz]=x sonst fängst du mit y[1] an und nicht mit y[0].

    außerdem wird dein x in der schleife nicht auf null abgefragt und du machst die zuweisung.

    also ich würd die schleife so schreiben:
    Code:
        while ((x = bufferedReader.readLine()) != null) {
            y[anz] = x;
            anz++;
        }
    
     
  6. zblack, 16.11.2011 #6
    zblack

    zblack Threadstarter Gast

    hmm, es funktioniert immer noch nicht.
    der code sieht jetzt so aus, aber im spinner is immer noch nix.
    die schleife habe ich verändert .
    Code:
    public class EinstellungenActivity extends Activity {
    
        private ArrayAdapter<String> adapter2;
        private Spinner reifenmarken;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.einstellungen);
    
            reifenmarken = (Spinner) findViewById(R.id.sr_marke);
            
            String line;
            try{
                FileReader fileReader;
                String[] y = new String[40];
                fileReader = new FileReader("test.txt");
    
                BufferedReader bufferedReader = new BufferedReader(fileReader);
                String x;
                int anz = 0;
    
                while ((x = bufferedReader.readLine()) != null) {
                    y[anz] = x;
                    anz++;
                }
                bufferedReader.close();
                adapter2 = new ArrayAdapter<String>(this,
                        android.R.layout.simple_spinner_item, y);
             adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                reifenmarken.setAdapter(adapter2);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }     
        }
    }
    
    wo soll die Datei eigentlich liegen ? ich habe die jetzt einfach in den Projekt gelegt. da wo die ManifestDatei liegt. Obwohl wenn die Datei nich da wäre, dann sollte eigentlich eine Fehlermeldung kommen, kommt aber nicht.
     
  7. swordi, 16.11.2011 #7
    swordi

    swordi Gewerbliches Mitglied

    hmm hast überhaupt was in deiner test.txt?

    denn da hätte es vorher schon abstürzen sollen, wenn da überhaupt was gelesen werden würde.

    check das nochmal
     
  8. zblack, 16.11.2011 #8
    zblack

    zblack Threadstarter Gast

    in der datei ist das drin :
    hallo
    wie
    gehts
    dir
    aaaaa

    genau so geschrieben
     
  9. Tom299, 16.11.2011 #9
    Tom299

    Tom299 Android-Experte

    und hast du mal debuggt, ob du die datei auch wirklich liest? zumindest das lesen und zuweisen in deine x-variable müßte ja stimmen.
     
  10. DieGoldeneMitte, 16.11.2011 #10
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Vielleicht ist die Liste ja sogar ganz normal da und zeigt nur die vielen null Strings vom Ende des Arrays y an.
    Denn 40 Zeilen hat deine test.txt ja offenbar nicht.
     
  11. zblack, 16.11.2011 #11
    zblack

    zblack Threadstarter Gast

    ich habe grade die Ausgaben der LogCat durchgeguckt und habe eine warning gefunden : FileNotFoundException : /test.txt no such File or directory. Habe eigentlich gedacht dass die Meldung in den Errors sein muss. Die Datei ist eigentlich im Projekt drin
     
    Zuletzt von einem Moderator bearbeitet: 16.11.2011
  12. swordi, 16.11.2011 #12
    swordi

    swordi Gewerbliches Mitglied

    dann leg die datei mal in den assets ordner und benutze den assetmanager

    dann wirds besser klappen
     
  13. zblack, 16.11.2011 #13
    zblack

    zblack Threadstarter Gast

    habe die Datei jetzt in assets ordner eingefügt. und den code umgebaut
    Code:
        try{
                String[] y = new String[40];
                AssetManager manager = getResources().getAssets();
                InputStream stream = manager.open("test.txt");
                BufferedReader bufferedReader = new BufferedReader(
                        new InputStreamReader(stream));
                String x;
                int anz = 0;
    
                while ((x = bufferedReader.readLine()) != null) {
                    y[anz] = x;
                    anz++;
                }
                bufferedReader.close();
                stream.close();
                adapter2 = new ArrayAdapter<CharSequence>(this,
                        android.R.layout.simple_spinner_item, y);
             adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                spinner.setAdapter(adapter2);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
    jetzt wird da nur erste zeile der Datei im Spinner angezeigt. wenn ich aber auf den Spinner klicke, stürzt die App wegen NullPointer ab. das wird auch in LogCat angezeigt.
     
  14. swordi, 16.11.2011 #14
    swordi

    swordi Gewerbliches Mitglied

    na immerhin wird schonmal was angezeigt :D

    jetzt musst halt dem nullpointer nachgehen. wird sicher auch zu finden sein
     
  15. Tom299, 16.11.2011 #15
    Tom299

    Tom299 Android-Experte

    einfaches Beispiel:
    Code:
    		String[] y = new String[10];
    		y[0] = "A";
    		y[1] = "B";
    		y[2] = "C";
    		y[3] = "D";
    		y[4] = "E";
    		y[5] = "F";
    		for (int i=0;i<10;i++) {
    			System.out.println(y[i]);
    		}
    
    Wenn du verstehst, warum es hier zu einer NullPointerException kommt, dann findest du auch den Fehler in deinem Code :flapper:
     
  16. zblack, 16.11.2011 #16
    zblack

    zblack Threadstarter Gast

    ja weil hier dat feld ne grosse von 10 hat und ich da nur 6 werte eintrage. dann will ich aber immer noch 10 werte ausgeben und weil es nur 6 werte drin sind, explodiert das programm mit ner NULL excp. Ach , dann muss ich für das Feld erstmal die Anzahl der Zeilen in der Datei ermitteln und dann dieses Feld mit der ermittelten grosse anlegen und dann funktionierts . also grund: falsche felddemension
     
    Zuletzt von einem Moderator bearbeitet: 16.11.2011
  17. Tom299, 16.11.2011 #17
    Tom299

    Tom299 Android-Experte

    das sind bei mir keine 40 Einträge, oder? :cool2:
     
  18. zblack, 16.11.2011 #18
    zblack

    zblack Threadstarter Gast

    hast recht. grund für den Fehler ist falsche felddemension.
     
  19. Tom299, 16.11.2011 #19
    Tom299

    Tom299 Android-Experte

    genau ;-)

    und um das zu vermeiden nimmst du am besten eine ArrayList, da brauchst du nicht mit hochzuzählen und fügst einfach mit .add() deinen wert in der schleife ein.
     
  20. zblack, 16.11.2011 #20
    zblack

    zblack Threadstarter Gast

    cool. vielen dank für die Hilfe
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
Integer-Wert übertragen auf zweite Activity Android App Entwicklung Freitag um 15:59 Uhr
Loading Spinner Android App Entwicklung 12.11.2017
[OFFEN] WebView Loading Spinner Android App Entwicklung 08.11.2017
[OFFEN] Bild in Pdf einfügen mit ITextG Libary Android App Entwicklung 24.08.2017
[ERLEDIGT] Android Studio - EditText (Passwort) mit Button einfügen? Android App Entwicklung 22.07.2017
[ERLEDIGT] Spinner feste double Werte zuordnen Android App Entwicklung 24.04.2017
[APPINVENTOR] Wie weise ich Werte aus Slidern zu ? Android App Entwicklung 07.02.2017
Probleme beim Encoding einer Textdatei von Windows Android App Entwicklung 25.01.2017

Benutzer fanden diese Seite durch die Suche nach:

  1. android spinner werte hinzufügen

Du betrachtest das Thema "Textdatei einlesen und Werte in den Spinner einfügen" im Forum "Android App Entwicklung",