1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Spinner mit Elementen aus einer Datenbank füllen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Prengepower, 24.03.2011.

  1. Prengepower, 24.03.2011 #1
    Prengepower

    Prengepower Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    0
    Registriert seit:
    15.03.2011
    Phone:
    HTC Sensation
    Hey!

    In meiner Datenbank gibt es die Spalte 'date' in der das Datum als String gespeichert ist. Mein Spinner soll alle Daten anzeigen, allerdings keine doppelt.

    Ich habe jetzt folgende Abfrage um den Cursor zu bekommen:
    Code:
    	public Cursor fetchDates(){
    		Date now = new Date();
    		Integer year = now.getYear();
    		Integer month = now.getMonth();
    		Integer day = now.getDate();
    		
    		Long datetime = (new Date(year, month, day)).getTime();
    		
    		return database.rawQuery("SELECT  DISTINCT "+ KEY_DATE+", "+KEY_ROWID+" FROM "+ DATABASE_TABLE+" WHERE "+KEY_BEGIN+">="+datetime.toString()+" AND "+KEY_SHOW+"=1 ORDER BY "+KEY_BEGIN+" ASC", null);
    	}
    Das funktioniert auch soweit, allerdings nur, wenn ich die ROWID mit ausgebe. Sobald ich das weglasse - was ich ja machen müssten, damit das DISTINCT Wirkung zeigt, bekomme ich einen Fehler, dass der Spinner keine ROWID findet -.-

    Hier noch der Code wo ich den Spinner fülle:
    Code:
    	private void fillSpinner(){
    		cursorDate = mDbAdapter.fetchDates();
    		startManagingCursor(cursorDate);
    		
    		Spinner dateSpinner = (Spinner) findViewById(R.id.spinnerDate);
    
    		String[] from = new String[] { DatabaseAdapter.KEY_DATE };
    		int[] to = new int[] { android.R.id.text1 };
    				
    		// Now create an array adapter and set it to display using our row
    		SimpleCursorAdapter spinneradapt = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, cursorDate, from, to);
    		
    		spinneradapt.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            dateSpinner.setAdapter(spinneradapt);
            dateSpinner.setPrompt(this.getResources().getString(R.string.spinnerPrompt)); 
            dateSpinner.setAdapter(spinneradapt);
    	}
    Wie kann ich das beheben?

    Danke!
     
  2. mago, 24.03.2011 #2
    mago

    mago Junior Mitglied

    Beiträge:
    33
    Erhaltene Danke:
    4
    Registriert seit:
    30.04.2010
    Phone:
    HTC Desire
    indem Du group by anstat von distinct verwendest.
     
  3. Prengepower, 24.03.2011 #3
    Prengepower

    Prengepower Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    0
    Registriert seit:
    15.03.2011
    Phone:
    HTC Sensation
    Mmh und wie soll ich das dann auswerten?
    Hab noch nie mit Group By gearbeitet..
     
  4. mago, 24.03.2011 #4
    mago

    mago Junior Mitglied

    Beiträge:
    33
    Erhaltene Danke:
    4
    Registriert seit:
    30.04.2010
    Phone:
    HTC Desire
    Ich hab das mal mit einem Table ausprobiert, den ich in einer Datenbank habe.

    Hoffentlich wird es damit klarer.

    Code:
    select _id, logDate from logentry group by logDate order by _id;
     
  5. Prengepower, 25.03.2011 #5
    Prengepower

    Prengepower Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    0
    Registriert seit:
    15.03.2011
    Phone:
    HTC Sensation
    Danke für deine Hilfe! Hab es aber jetzt auch auf einem anderen Weg hinbekommen.
    Mein Problem ist jetzt allerdings noch, dass meine Einträge im Spinner nach dem ersten Buchstaben sortiert sind. Ich kann meine Sortierung ändern wie ich will, aber das hilft nichts..

    Lässt sich das irgendwie abstellen?
     
  6. garak, 25.03.2011 #6
    garak

    garak Ehrenmitglied

    Beiträge:
    8,270
    Erhaltene Danke:
    4,795
    Registriert seit:
    12.12.2009
    Du verwendest doch ein Array-Adapter, der ist für die Sortierung verantwortlich.
     
  7. Prengepower, 25.03.2011 #7
    Prengepower

    Prengepower Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    0
    Registriert seit:
    15.03.2011
    Phone:
    HTC Sensation
    Öhm das verstehe ich jetzt net so ganz recht !?
     
  8. garak, 25.03.2011 #8
    garak

    garak Ehrenmitglied

    Beiträge:
    8,270
    Erhaltene Danke:
    4,795
    Registriert seit:
    12.12.2009
    Momentan hast du einen SimpleCursorAdapter zum Einsatz gebracht (also im Prinzip einen Array-Adapter), der die Daten aus der Tabelle liest und dem Spinner zur Verfügung stellt. Sortierung inklusive. Anstelle dessen kannst du direkt den Array-Adapter nehmen, die Daten holen, umsortieren und dem Spinner geben. Oder eine andere Möglichkeit, überschreiben die Klasse SimpleCursorAdapter und ändere dort die Methode ab, um die Daten umzusortieren. Was einfacheres fällt mir gerade nicht ein. Sortierung in der Datenbankabfrage hattest du ja probiert.
     
    Prengepower bedankt sich.
  9. Prengepower, 28.03.2011 #9
    Prengepower

    Prengepower Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    0
    Registriert seit:
    15.03.2011
    Phone:
    HTC Sensation
    Coole Sache hat geklappt - Danke ;) :)
     

Diese Seite empfehlen

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. fülle string-array von datenbank android