2012-12-25 39 views
1

這是我的第一個問題。我正在Android上編寫一個簡單的遊戲(我的第一個遊戲)。這是一個64場的棋盤遊戲。現在每次點擊一個字段都需要完成一些工作。我想出一個辦法做到這一點這樣:用循環處理棋盤遊戲領域?

switch(v.getId()) { 
case R.id.field1: 
... 
... 
... 
} 

這是工作,但它是64場那種煩人。我可以以某種方式檢索字段ID並在循環中執行它?

findViewById(R.id.field+i).doSomething(); 

我知道這不能做到這一點,我只是想說出我的想法。以下將介紹Javascipt,但如何在Java中實現?可能嗎?

+1

你有看法,所以你可以寫'v.doSomething()'或我在這裏丟失了什麼? – Henry

+0

亨利,事情是doSomething()是我的活動類的一種方法,v只是一個View對象。或者我在這裏錯過了什麼,它可以以某種方式完成? :) – user1928115

+0

'findViewById'讓你回到一個視圖,因此我認爲在視圖上實現了'doSomething'。 – Henry

回答

0

AFAIK沒有辦法在Eclipse中使用Android佈局編輯器來執行此操作。最簡單的方法就是以編程方式創建視圖和存儲它們的集合或數組中:

TextView[] fields = new TextView[64]; 
for (int i = 0; i < 64; i++) { 
    TextView textView = new TextView(context); 
    textView.setText("Programmatic TextView"); 
    parentLayout.addView(textView, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
    fields[i] = textView; 
} 

您可以創建在佈局編輯器中parentLayout視圖。

+0

帶數組的想法看起來很有趣。我會嘗試一下,看看它是怎麼回事!謝謝:) 順便說一句。任何人都可以簡單地向我解釋這是什麼情景嗎?到目前爲止,我只看到有人在那裏寫「這個」。有關係嗎?怎麼樣? – user1928115

+0

那麼,但如何給特定領域的ID?我使用TableRows和LinearLayouts創建了64個字段的棋盤遊戲。現在我想給每個LinearLayout(單個字段)和ID,以便稍後可以在單擊字段後執行一些操作。 – user1928115

+0

活動是Context的實現,或者您可以使用parentLayout.getContext()。如果你需要,你可以使用textView.setId(...)來設置你想要的任何ID。但是,ID通常僅用於查找組件並將其引用存儲在變量中。你已經有了這個字段數組,所以你不應該真的需要它們。 –