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

Button[] und addView(buttons[i]);

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von StefMa, 14.11.2011.

  1. StefMa, 14.11.2011 #1
    StefMa

    StefMa Threadstarter Gewerbliches Mitglied

    Beiträge:
    2,054
    Erhaltene Danke:
    413
    Registriert seit:
    16.10.2010
    Hi,

    ich lese eine Datenbank aus, wieviele Buttons (in einem array) erstellt werden.

    Danach möchte ich die erstellen Buttons auf ein LinearLayout packen. (+ listener)..

    Allerdings werden die Buttons ÜBERhAUPT nicht angezeigt..

    Layout:
    dann der Quelltext dazu:


    MfG Ice
     
  2. swordi, 14.11.2011 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    hmm ich vermute:

    dein linearlayout (und auch die scrollview) wird auf höhe 0 gesetzt, da es anfangs keine buttons gibt.

    dann fügst du zwar die buttons hinzu, aber die höhe wird nicht angepasst. versuch mal layout_height="fill_parent"
     
  3. StefMa, 14.11.2011 #3
    StefMa

    StefMa Threadstarter Gewerbliches Mitglied

    Beiträge:
    2,054
    Erhaltene Danke:
    413
    Registriert seit:
    16.10.2010
    Hi,

    funktioniert leider auch nicht.
    Da du von einem Layout problem ausgehst, habe ich mal das Komplette layout angefügt..

    Layout: Your code. Your site. Use it. - paste.org
    (Die einrückung kommt von paste.org nicht von mir ;)

    MfG Ice
     
  4. swordi, 14.11.2011 #4
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    link geht nicht
     
  5. StefMa, 14.11.2011 #5
    StefMa

    StefMa Threadstarter Gewerbliches Mitglied

    Beiträge:
    2,054
    Erhaltene Danke:
    413
    Registriert seit:
    16.10.2010
    Arg oO

    http://goo.gl/XePob

    P.s.: Link geht, das weiterleiten von android-hilfe. de geht nicht richtig ;) Also Copy und paste :D
     
  6. Tom299, 15.11.2011 #6
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    nur mal so als hinweis: du initialisiert in jedem schleifendurchlauf dein array neu. mit cursor.getCount() kann man aber die anzahl der zeilen abfragen und damit hättest du deine array-größe schon im voraus und brauchst nur 1 mal zu initialisieren. ansonsten würde ich ne array-list nehmen und bei jedem durchlauf mein neues objekt erzeugen und reinstecken. aber das ist wohl geschmackssache ;-)

    desweiteren glaube ich, daß du ein index out of bounds bekommen müßtest, weil du setzt howlong im 1. durchlauf schon auf 1, gehst aber in der i-schleife bis auf 0. da müßte wohl dann ein i>0 hin, sonst hast du hier schon mal 2 durchläufe, und das sollte eigentlich falsch sein. vielleicht irre ich mich auch, aber checks mal trotzdem :)
     
  7. swordi, 15.11.2011 #7
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    warum nutzt du teilweise px und dip?
     
  8. the_alien, 15.11.2011 #8
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    PHP:
    LinearLayout ll = (LinearLayoutfindViewById(R.id.favoriten_layout);

    Cursor id myDB.rawQuery("select _id from "table_name ""null);

    while(
    id.moveToNext())
    //howLong wird bei jedem Schleifendurchlauf um 1 erhöht
    howLong howLong 1
    //bei jedem Schleifendurchlauf wird buttons neu initialisiert
    Button[] buttons = new Button[howLong];
    //bei jedem Schleifendurchlauf wird das Array komplett neu gefüllt.
    for (int i=howLongi==0i--)
    {
    buttons[i] = new Button(this); 
    buttons[i].setText("hallo");
    ll.addView(buttons[i]);
    }
    Wenn deine Datenbank sagt du hast 10 Buttons, dann bekommst du im ersten Durchlauf einen Button. Im zweiten Durchlauf 2 Buttons, dann 3... aber die würden sich addieren. Also: 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55 Buttons.

    Ganz davon ab, dass dein Code nicht einen Button anzeigt würde das auch nicht das Ergebnis geben was du erwartest wenn die Buttons angezeigt werden....
     
  9. StefMa, 15.11.2011 #9
    StefMa

    StefMa Threadstarter Gewerbliches Mitglied

    Beiträge:
    2,054
    Erhaltene Danke:
    413
    Registriert seit:
    16.10.2010
    Bin grade dabei alle px zu dip zu formatieren ;) Anscheinend etwas übersehen..
    (Spielt hier aber auch keine Rolle :D)

    the_alien:
    Ich sehe bei while(id.moveToNext()) keine geschweifte klammer!
    => NUR howLong kriegt in die while-schleife einen +1 ;), der Rest ist unabhängig von der Schleife!

    MfG Ice

    €dit:
    <- genau hierdrum geht es in den Thread ;) Eine Lösung?
     
  10. swordi, 15.11.2011 #10
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    deswegen macht man klammern um die schleife

    auch wenns nur eine zeile ist :D
     
    the_alien bedankt sich.
  11. StefMa, 15.11.2011 #11
    StefMa

    StefMa Threadstarter Gewerbliches Mitglied

    Beiträge:
    2,054
    Erhaltene Danke:
    413
    Registriert seit:
    16.10.2010
    Möchten wir uns jetzt wegen einer geschweiften Klammer streiten oder mein Problem lösen? :sleep:
     
  12. swordi, 15.11.2011 #12
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    jaja bleib kuhl
     
  13. StefMa, 15.11.2011 #13
    StefMa

    StefMa Threadstarter Gewerbliches Mitglied

    Beiträge:
    2,054
    Erhaltene Danke:
    413
    Registriert seit:
    16.10.2010
    Habs gefixt!..

    Danke MfG Ice
     
  14. the_alien, 15.11.2011 #14
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Lösungen für sich behalten ist genauso uncool wie sich über fehlende Klammern streiten.
     
  15. StefMa, 15.11.2011 #15
    StefMa

    StefMa Threadstarter Gewerbliches Mitglied

    Beiträge:
    2,054
    Erhaltene Danke:
    413
    Registriert seit:
    16.10.2010
    Ach hier geht es ums ansehen? :flapper:

    Nagut:
    Die for(int i = howLong...* war iwie falsch! Deshalb hat er auch keine Buttons ausgegeben, da er sie iwie nicht betrten hat.. Oder sonste was :D

    Als ich sie auf int i = 0; i<howLong;i++) geändert habe hat es einwandfrei funktioniert!

    MfG Ice
     

Diese Seite empfehlen