[Android] Button 配列を設定する

Buttonやテキストなどを複数配置するようなレイアウト、当然、配列を使ってfor文で一気に作りたいですね。レイアウトファイルにちまちま書かずに作ってみました。

buttonArray_1
buttonArray_2

Android Studio 2.2.2
Android 7.1

 

sponsored link

setTag(), getTag()

 
配列としてそれぞれのButtonをindexで管理したいのですが、ボタンタップで受け取る時のIDをどうするかというのは考えないといけないですね。

結局レイアウトファイルから
button[0] = (Button)findViewById(R.id.button_0) ;
button[1] = (Button)findViewById(R.id.button_1) ;

ではいまいちです。レイアウトファイルでの記述を止めてコードで書きましょう。

また、ボタンのクリックリスナーもfor文でつくると、どのボタンがタップされたかわからないといけませんボタンのIDを呼び出すのもありますが

setTag(Object tag), getTag()を使うとIDを使わずにできます
とは言っても実のところどうしてもTagを使う必要があるのかと疑問もあります

Sets a tag associated with this view and a key. A tag can be used to mark a view in its hierarchy and does not have to be unique within the hierarchy. Tags can also be used to store data within a view without resorting to another data structure. The specified key should be an id declared in the resources of the application to ensure it is unique (see the ID resource type).

View

色々としがらみがなく使えるということでしょうか
 

Button array

 
とりあえず作ってみたいと思います。

ボタンにsetTag(“1”)を設定

view.getTag()で取り出す

 
 
MainActivity.java

 

buttonArray_1
Button3 をタップ
buttonArray_2
TextViewにButton3を表示

Ref:
public void setTag (Object tag)
public Object getTag ()
 
関連ページ: