0

基本的に 2 つのアクティビティで構成される Android アプリを作成します。したがって、最初にたくさんのボタン (100 以上) が必要であり、それらのいずれかをクリックすると、特別な ID を取得して 2 番目のアクティビティに移動します。しかし、何百ものボタンを宣言し、1 つのコードをコピーしてすべてのボタンにほぼ同じ onClickLister を設定することを宣言する代替手段はありますか? 特別な構造はありますか?ありがとう

編集: すべてのボタンは、実際には 1 から n までのインデックスが付けられています。クリックすると、2 番目のアクティビティが開始され、そのインデックスが表示されます。基本的に、スピナーやその他の機能は使用できません。クリック可能なものが 3 行あり、それぞれに異なる画像が含まれているためです。

編集 2: アイデアを提供するために、プレイしたいレベルを実際に選択するときに、Angry Birds メニューのようなボタンのテーブルをいくつか作成します。したがって、クリックするとボタンのIDが取得され、2番目のアクティビティが開始されます

4

3 に答える 3

1

を使用する必要がありますListView

ListViewsは、同時に多くのアイテムを処理するのに最適です。それらはユーザーにとっても自然なことです。さらに、ワンクリックリスナーのみを使用します- OnItemClickListener

AndroidレファレンスでListViewsを操作する方法に関する便利な例があります。

于 2012-04-22T09:13:11.487 に答える
1

メソッドを呼び出してボタンを追加します

private void addButton(){       
    LinearLayout view = (LinearLayout) findViewById(R.id.linear_layout_id_here);            
     Button btn  = null;
     int w = 50;
     int h = 25;
    for(int i=1; i<100; i++) {
        btn = new Button(this);
        btn.setLayoutParams(new LayoutParams(w,h));
        btn.setText("button " +i);
        btn.setTag(""+i);
        btn.setOnClickListener(onClickBtn);  
        view.addView(btn);
        btn = null;
    }           
}

ボタンのonclickを処理するためにこのメソッドを呼び出します

    private View.OnClickListener onClickBtn = new View.OnClickListener() {
    public void onClick(View view) {
        final int tag = Integer.parseInt(view.getTag().toString());
        switch (tag) {
        case 1:
            // Do stuff
            break;
        case 2:
            // Do stuff
            break;

        default:
            break;
        }
    }
};
于 2012-04-22T09:14:30.600 に答える
0

次のようなボタンをコードに追加できます。

@Override
public void onCreate(Bundle savedInstanceState) {
    /*your code here*/

    GroupView gw =findViewById(R.id.pnlButtonscontainer);  //find the panel to add the buttons

    for(int i=0; i<100; i++) {
        Button b = new Button(this);
        b.setLayoutParameters(new LayoutParameters(w,h));
        b.settext = i+"";
        b.setOnClickListener(new OnClickListener(){
        });
    }
}

ブラウザに直接コーディングしたため、コードに構文エラーが表示される場合がありますが、これが100個のボタンを追加するためのポイントであり、唯一の方法ではありません。

于 2012-04-22T09:17:10.583 に答える