Android で 64 個のボタンを使用してチェス盤を設計しました。しかし、それを設計した後、64 個の OnClickListeners を実装する必要があるため、多くの問題に直面しています。ループを使用して OnClickListener を実装する他の方法はありますかfor
、またはボタンを使用してチェス盤を設計するのは正しくありませんか?
3 に答える
本当に 64 個の個別のビューが必要な場合は、64 個の個別の onClickListeners は必要ありません。XML でビューに onClick 属性を与えるだけで、関連付けられたアクティビティの同じメソッドにすべて渡すことができます。次に、ビルド時にテーブルを生成して ID を座標にマップするか、独自の属性を使用して各ビューに座標を追加できます。
ただし、チェス盤を1 つのビューで表示する方がはるかに理にかなっています。このビューは、それ自体を 64 個の正方形に分割し、どの部分がどこにあるかを示す内部テーブルを維持し、その に正方形と部分を描画し、.onDraw()
クリックされたときに計算を行って、どの正方形がクリックされたかを判断します。サンプルSnake アプリで学習TileView.java
します。そのコードを理解したら、クラスで簡単に時間を過ごすことができます。ChessboardView
開発者サンプル、特にグリッド ベースのゲーム ボードのカスタム ビューを使用する tic tac toe アプリケーションを確認する必要があります。あなたはその考えを拡張できるはずです。
各正方形のボタンを引き続き使用する場合は、 を作成するためにそれらの ID を知る必要がありますonClickListener
。これを解決するには 2 つの方法があります。
レイアウト xml に onClickListener を追加します。
<Button
parameters...
onClick="myOnClick"
</
Activity
その後、メソッド myOnClick を作成できます。
public void myOnClick(View clickedView){
//code
}
ボタン ソリューションのおそらくより良い方法は、代わりにコードから作成することですLayoutInflater
。xml ボタンを取得して作成し、現在のコンテンツに追加するか、対応する Java クラスを使用して新しいボタンを作成します。Button myButton e3 = new Button(context);
はい、ボタンを繰り返し処理して、それぞれにリスナーを追加することができます。ループ内では、次のようなことを行います。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Handle click events...
}
});