6

アンドロイド 2.3.3

N 行 N 列のテーブルがあります。行ごとに 4 つのボタンを動的に追加し、後でクリックされたボタンに基づいてアクションを実行する必要があります。を使用してボタン ID を整数値で設定できることはわかっていますが、XML ファイルで設定するようにbutton.setID()ID を文字列値として設定できるかどうかを知りたいです。btnXYZ1btnXYZ2

4

6 に答える 6

14

そのためにタグを使用できます。例えば

btn.setTag("btXYZ");
于 2013-02-11T08:31:48.103 に答える
4
for (int i=0;i<nob;i++) {
     Button btn = new Button(this);
     btn.setId(i+1);
     btn.setText("Button"+(i+1));
     btn.setOnClickListener(btnclick); <<<<<<<set click
     btn.setLayoutParams(lprams);
     dynamicview.addView(btn);
}

そして、このリスナーを any メソッドの外側とクラスの内側に追加します

OnClickListener btnclick = new OnClickListener() {

    @Override
    public void onClick(View view) {

        switch(view.getId()) {
            case 1:
                //first button click
                break;
                //Second button click
            case 2:
                break;
            case 3:
                //third button click
                break;
            case 4:
                //fourth button click
                break;
             .
             .
             .
            default:
                break;
        }
    }
};
于 2013-02-11T08:33:56.237 に答える
2

XML ファイルで使用する文字列は R.java の int に対応するため、実際には int です。setId() メソッドは、引数として int 値のみを受け入れます。次のような定数ファイルで ID を定義できます。

public class Ids {
    public static final int ID_ONE = 1;
}

そしてそれを次のように使用します:

button.setId(Ids.ID_ONE);
于 2013-02-11T08:33:58.233 に答える
0

いいえ、文字列に設定することはできません。IDはint値です。XMLから設定した場合でも、int値のリソース名にすぎません。

于 2013-02-11T08:43:32.730 に答える
0

とにかくビューへの参照がある場合は、たとえばHashMapを使用して、それらすべてをHashMapに保存するだけです。

タイプミスを回避するためのもう1つの方法は、hashMapのキーとして列挙型を使用することです(例:HashMap)。

于 2013-02-11T08:45:18.383 に答える
0

いいえ、に設定することはできませんString。ID はint値です。設定したとしても、値XMLのリソース名に過ぎません。int

于 2013-02-11T08:33:37.557 に答える