Android Button-Array (Schleife)

  • 3 Antworten
  • Letztes Antwortdatum
P

pascals

Neues Mitglied
0
Hallo,

ich habe vor dynamische Buttons zu erzeugen mit Hilfe einer for-Schleife. Dazu habe ich bisher folgenden Code erstellt:

Code:
Integer id[] = new Integer[maxid];
String title[] = new String[maxid];

Button pb[] = new Button[maxid];

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.BELOW, R.id.button);

cursor.moveToFirst();
    
for (int n=0; n<maxid; n++) {
                pb[n] = new Button(this);
                title[n] = cursor.getString(1);

                pb[n].setId(20 + n);
                pb[n].setText(title[n]);
                pb[n].setLayoutParams(params);

                fp.addView(pb[n]);
                System.out.println(n + ". Button hinzugefügt");
                cursor.moveToNext();
            }

Jedoch wird dabei lediglich der letzte Button erzeugt. Woran liegt das?

Man könnte natürlich denken, dass sie lediglich übereinander erstellt werden, da sie ja keine unterschiedlichen Paramter/Positionen haben. Das habe ich aber schon versucht zu testen, indem ich den Parameter nach einem Durchlauf ändere. Trotzdem gab es nur den letzten Button an der neuen Position. Auch habe ich es schon mit Thread.sleep probiert die Durchläufe kurz anzuhalten, dennoch war lediglich nach dem letzten Durchgang der letzte Button da, vorher keiner.

n. Button hinzugefügt steht übrigens nach jedem Durchgang im Log.

Danke für eure Hilfe!

mfG Pascal
 
Ja da würde ich auch denken dass alle ab dem 2. Button unter dem Ersten entstehen.

Ich würde es mit einer Listview versuchen ...
 
Mit dem LinearLayout funktionierts sehr gut:
Code:
public class MainActivity extends ActionBarActivity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        LinearLayout mainLayout = (LinearLayout) findViewById(R.id.main_layout);
        for (int i = 0; i < 10; i++) {
            Button btn = new Button(this);
            btn.setId(i);
            btn.setOnClickListener(this);
            mainLayout.addView(btn);
        }

    }


    @Override
    public void onClick(View v) {
        Log.d("MainActivity", "onClick  " + v.getId());
    }
   
}

Code:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              android:id="@+id/main_layout"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical"
              android:paddingLeft="@dimen/activity_horizontal_margin"
              android:paddingRight="@dimen/activity_horizontal_margin"
              android:paddingTop="@dimen/activity_vertical_margin"
              android:paddingBottom="@dimen/activity_vertical_margin"
              tools:context=".MainActivity">


</LinearLayout>
 
  • Danke
Reaktionen: pascals
missspelled schrieb:
Mit dem LinearLayout funktionierts sehr gut:
Code:
public class MainActivity extends ActionBarActivity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        LinearLayout mainLayout = (LinearLayout) findViewById(R.id.main_layout);
        for (int i = 0; i < 10; i++) {
            Button btn = new Button(this);
            btn.setId(i);
            btn.setOnClickListener(this);
            mainLayout.addView(btn);
        }

    }


    @Override
    public void onClick(View v) {
        Log.d("MainActivity", "onClick  " + v.getId());
    }
  
}

Code:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              android:id="@+id/main_layout"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical"
              android:paddingLeft="@dimen/activity_horizontal_margin"
              android:paddingRight="@dimen/activity_horizontal_margin"
              android:paddingTop="@dimen/activity_vertical_margin"
              android:paddingBottom="@dimen/activity_vertical_margin"
              tools:context=".MainActivity">


</LinearLayout>

Danke! Lag zwar nicht daran, hab aber an deinem Code gemerkt, dass ich die Parameter falsch definiert hatte. Funktioniert jetzt :)
 

Ähnliche Themen

M
Antworten
21
Aufrufe
1.358
swa00
swa00
Mr-Fisch
Antworten
5
Aufrufe
964
migi01
migi01
Mr-Fisch
Antworten
8
Aufrufe
1.005
Mr-Fisch
Mr-Fisch
M
Antworten
9
Aufrufe
788
mkuz24
M
A
Antworten
5
Aufrufe
691
swa00
swa00
Zurück
Oben Unten