0

我打算写一些安卓应用程序,它基本上由两个活动组成。所以首先应该有很多按钮(100+),点击其中任何一个我都会得到一些特殊的 id 并转到第二个活动。但是有没有其他方法可以声明数百个按钮并将一段代码复制/粘贴到每个按钮设置几乎相同的onClickLister?有什么特殊的构造吗?谢谢

编辑:每个按钮实际上都是从 1 到 n 索引的。并在单击时启动第二个活动并获取该索引以显示它。我基本上不能使用任何微调器或其他东西,因为会有 3 行可点击的东西,每行都带有不同的图像

编辑2:所以,为了给你一个想法,当你实际选择你想要玩的关卡时,我会做一些按钮表,比如愤怒的小鸟菜单。因此,单击时您将获得按钮的 id 并开始第二个活动

4

3 回答 3

1

您应该使用ListView.

ListViews 非常适合同时处理大量项目。它们对用户来说也是很自然的。此外,您仅使用一键式侦听器 - OnItemClickListener.

在Android Reference中有一个关于如何使用 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 on button

    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 回答