我正在尝试优化我的Android应用程序

时间:2011-09-14 21:05:21

标签: java android optimization multidimensional-array togglebutton

我为一门java课程制作了LightsOut游戏,并且作为一种学习android的方法,我试图将其重建为一个应用程序。

主要活动包括一个togglebuttons网格。当“检查”按钮时,它和它的相邻按钮被切换。当所有按钮都关闭时,游戏就赢了。我已经让它工作到了这一点,但代码是可怕的。

我想通过制作一个togglebuttons的二维数组来清理代码。我现在如何拥有它,我只需单独声明每个按钮。这使得大块冗余代码无法轻松扩展。

最初,在java中我这样做了:

    buttons = new LightButton[xCor][xCor];

    for (int x = 0; x < xCor; x++) {
        for (int y = 0; y < xCor; y++) {
            buttons[x][y] = new LightButton(this, x, y);
            panel.add(buttons[x][y]);
        }
    }

xCor基于构建游戏场之前的用户输入。这使得通过遍历阵列初始化和检查游戏的状态变得容易。我根本没有找到用android做这个的方法。

那么,有没有办法根据用户输入制作一个togglebuttons数组/列表?

以下是活动:

公共类LightsOutActivity扩展了Activity实现OnClickListener {

protected ToggleButton[][] buttonArray;



/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    buttonArray = new ToggleButton[4][4];

    for (int x = 0; x < 4; x++) {
        for (int y = 0; y < 4; y++) {
            buttonArray[x][y] = new ToggleButton(this);
            LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, 1.0f);
            buttonArray[x][y].setLayoutParams(params);

            ((ViewGroup) findViewById(R.layout.main)).addView(buttonArray[x][y]);
        }
    }



    setContentView(findViewById(R.layout.main));
}

立即导致力量关闭。 R.layout.main中唯一的视图是线性布局。现在我已经硬编码了数组大小。

1 个答案:

答案 0 :(得分:0)

你不能从EditText视图中获取用户输入吗?然后,您可以使用该输入初始化数组。