1

動的なボタンを生成するコードを書いていますが、各ボタンのクリック イベントを動的に実装する方法がわかりません。私はいくつかの答えを見つけましたが、私のコードでは動作しません...助けてください..これは私のコードです

public class dynamicbuttion extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        ScrollView sv = new ScrollView(this);
        LinearLayout ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        sv.addView(ll);

        for(int i = 0; i < 5; i++) {
            Button btn = new Button(this);
        btn.setId(i);
        btn.setText("dynamic buttion " + i);
            ll.addView(btn);

        }

        this.setContentView(sv);

    }
}
4

6 に答える 6

4

Custom Layoutを使用して実行しました:

private LinearLayout linearLayoutParent;

onCreate :

linearLayoutParent = (LinearLayout)findViewById(R.id.linearLayoutParent);

動的な textviewsを作成する必要があるときはいつでも、単純にParent Linear Layoutに追加します:

TextView[] name = new TextView[10];
for (int i = 0; i < 10; i++) {
    View view = getLayoutInflater().inflate(R.layout.child_view, linearLayoutParent, false);
    name[i] = (TextView) view.findViewById(R.id.child_name);
    name[i].setText("Dynamic Textxview " + i);
    name[i].setId(i);
    name[i].setTag(String.valueOf(i));
    ll.addView(view);
    name[i].setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Log.i("Clicked", ""+v.getTag());
        }
    });
}

child_view.xml :

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/child_name"
    android:layout_width="120dp"
    android:layout_height="50dp"
    android:background="#969696"
    android:gravity="center"
    android:text=""
    android:textColor="#fff"
    android:textSize="16sp" />

これがあなたを助けることを願っています。

于 2014-04-24T09:53:34.777 に答える
0
public class DynamicButton extends Activity {

    private LinearLayout ll;

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

        ll = (LinearLayout) findViewById(R.id.llContent);
        Button[] dynamic_button = new Button[10];
        for (int i = 0; i < 10; i++) {
            dynamic_button[i] = new Button(this);
            dynamic_button[i].setId(i);
            dynamic_button[i].setTag("" + i);
            dynamic_button[i].setText("My Dynamic Button No: " + i);
            ll.addView(dynamic_button[i]);
            dynamic_button[i].setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    Log.i("Clicked", "" + v.getTag());
                }
            });
        }

    }
}
于 2014-04-24T09:12:35.243 に答える