2013-03-04 30 views
0

我在Android中設計了一個使用64個按鈕的國際象棋棋盤。但是在設計之後,我面臨很多問題,因爲我需要實現64個OnClickListeners。有沒有其他方法可以使用for循環來實現OnClickListener,或者使用按鈕設計棋盤是不正確的?設計象棋android中的用戶界面

+1

僅僅因爲99%的例子使用了「OnClickListener」的匿名子類並不意味着你必須這樣做。用一個在類中存儲x,y的類和一個用x,y作爲參數的構造函數對它進行子類化。 – martijno 2013-03-04 17:38:30

回答

1

是的,可以遍歷按鈕併爲每個按鈕添加一個偵聽器。裏面你的循環,你會做這樣的事情:

button.setOnClickListener(new View.OnClickListener() {  
    @Override 
    public void onClick(View v) { 
     // Handle click events... 
    } 
}); 
+0

但每個按鈕都有不同的名稱(如a1,a2..a8,b1,b2 ... b8),如何在循環中用作按鈕ID – 2013-03-04 17:40:25

+0

本文有一些關於如何做到這一點的好信息: http://stackoverflow.com/questions/4809834/how-to-iterate-through-a-views-elements – elevine 2013-03-04 17:51:55

+0

我創建了TableLayout 8個表格,每個表格包含LinearLayout.so中的8個按鈕,該帖子中給出的答案將會檢查所有這些兒童(包括按鈕)或不? – 2013-03-04 18:06:55

3

你應該看看developer samples,它使用了基於網格的遊戲板自定義視圖特別是井字應用程序。你應該能夠擴展這個想法。

如果您想要繼續使用每個方塊的按鈕,您必須知道它們的ID才能創建onClickListener s。有兩種方法可以解決這個問題。
要麼添加onClickListener在佈局XML:

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

在你Activity那麼您可以創建方法myOnClick:爲按鈕解決方案

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

一個可能更好的方式是創建它們從代碼中取出並創建xml按鈕並添加到當前內容中,或者使用相應的java類創建新按鈕:Button myButton e3 = new Button(context);

3

如果你真的想要64個獨立的視圖,你不需要64個單獨的onClickListeners;只需在XML中爲視圖指定一個onClick屬性,全部使用與關聯活動相同的方法。然後,您可以在構建時生成一個表來將ID映射到座標,或者您可以使用您自己的屬性將座標添加到每個視圖。

但是,它會爲您的棋盤提供單一視圖更有意義。這個視圖將自己劃分爲64個方格,維護一個內部表格,指示哪些部分在哪裏,在其.onDraw()中繪製正方形和棋子,並在點擊時確定點擊哪個方塊來進行數學運算。在sample Snake應用中研究TileView.java;一旦你瞭解了這些代碼,你就可以輕鬆地與你的課程相關聯。