0

我在 Android 中使用 64 个按钮设计了一个棋盘。但是在设计之后,我遇到了很多问题,因为我需要实现 64 个 OnClickListeners。有没有其他方法可以使用for循环实现 OnClickListener,或者使用按钮设计棋盘是不正确的?

4

3 回答 3

3

您应该查看开发人员示例,尤其是井字游戏应用程序,它使用基于网格的游戏板的自定义视图。你应该能够扩展这个想法。

如果您想继续为每个方块使用按钮,您必须知道它们的 id 才能创建onClickListeners。有两种方法可以解决这个问题;
在布局 xml 中添加 onClickListener:

<Button
parameters...
onClick="myOnClick"
</

然后,您可以在您Activity的方法中创建 myOnClick 方法:

public void myOnClick(View clickedView){
    //code
}

按钮解决方案的一种可能更好的方法是从代码中创建它们,或者获取LayoutInflater并创建您的 xml 按钮并添加到您当前的内容中,或者使用相应的 java 类创建新按钮:Button myButton e3 = new Button(context);

于 2013-03-04T17:43:00.687 回答
3

如果你真的想要有 64 个独立的视图,你不需要 64 个独立的 onClickListener;只需在 XML 中为视图提供一个 onClick 属性,所有这些都与关联活动的相同方法有关。然后,您可以在构建时生成一个表以将 id 映射到坐标,或者您可以使用您自己的属性将坐标添加到每个视图。

但是,为您的棋盘提供单一视图会更有意义。此视图会将自身划分为 64 个方格,维护一个内部表格,指示哪些棋子在哪里,绘制方格和其中的棋子.onDraw(),并在单击时进行一些数学运算以确定单击了哪个方格。TileView.java示例Snake 应用程序中学习;一旦您理解了该代码,您将在ChessboardView课堂上轻松自如。

于 2013-03-04T17:50:43.447 回答
1

是的,可以遍历按钮并为每个按钮添加一个侦听器。在您的循环中,您将执行以下操作:

button.setOnClickListener(new View.OnClickListener() {      
    @Override
    public void onClick(View v) {
        // Handle click events...   
    }
});
于 2013-03-04T17:35:58.763 回答