2012-04-13 16 views
0

Ich möchte Schaltflächen programmgesteuert auf dem Bildschirm hinzufügen, und ich bekomme den Wert durch Analysieren API und jetzt möchte ich die Schaltflächen entsprechend der Länge eines Arrays anzeigen. Ich mache das, aber ich bekomme nur die letzte Taste angezeigt, aber innerhalb der for Schleife bekomme ich alle Werte korrekt, zeige aber nur die letzte Taste. Dies ist mein Code:Dynamische Tastenanzeige programmatisch Android

RelativeLayout relate; 

//... 
relate = (RelativeLayout)findViewById(R.id.relative); 

     protected void onPostExecute(Void result) { 
     if(dialog.isShowing() == true) { 
     dialog.dismiss(); 
    } 

    //int width = 100, height =50, x = 10, y = 20; 

    for (int i =0;i<adapt_obj.city_name_array.length;i++){ 
     b1 = new Button(myref); 

     b1.setText(adapt_obj.city_name_array[i]); 

    relate.addView(b1); 


    //relate.addView(b1, i, new RelativeLayout.LayoutParams(width,height)); 

    //height = height+80; 

    } 

    listlocation.setAdapter(adapt_obj); 
    adapt_obj.notifyDataSetChanged(); 
    } 

Antwort

2

Ein RelativeLayout stapelt die Ansichten, die Sie hinzufügen, an der oberen Ecke, wenn Sie keine Platzierungsregeln angeben. Ihre Schaltflächen werden dem Layout hinzugefügt, aber sie werden übereinander platziert und das einzig sichtbare ist das letzte, das Sie hinzufügen. Hier sind einige Änderung Ihrer for Schleife:

RelativeLayout relate; relate = (RelativeLayout)findViewById(R.id.relative); 
for (int i = 0; i < adapt_obj.city_name_array.length; i++){ 
    Button b1 = new Button(myref); 
    b1.setId(100 + i); 
    b1.setText(adapt_obj.city_name_array[i]); 
    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    if (i > 0) { 
     lp.addRule(RelativeLayout.BELOW, b1.getId() - 1); 
    } 
    b1.setLayoutParams(lp); 
    relate.addView(b1); 
} 
+0

Vielen Dank, Vielen Dank u sehr viel gearbeitet es – Ved

0

Sie nicht x und y-Werte in Android.you geben müssen, können Buttom links oben rechts ein Element hinzufügen. Auch Layout-Parameter sollten Sie wrap_content oder fill_parent verwenden.

Button button = new Button(this); 
    button.setText(@"text"); 
    button.setLayoutParams(new LayoutParams(WRAP_CONTENT,WRAP_CONTENT)); 
    layout.addView(button); 
0

Ich denke, das Problem ist mit dem relativen Layout. Ihre Schaltflächen werden möglicherweise übereinander gestapelt. Versuchen Sie, das übergeordnete Element zu einem linearen Layout zu machen.

+0

0k lassen Sie mich tun und antworten u bald – Ved