[Android] Button 配列を設定する

Android7 

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

Android Studio 2.2.3
Android 7.1.1

 


setTag(), getTag()

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

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

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

また、ボタンのクリックリスナーもfor文でつくると、どのボタンがタップされたかわからないといけません。ボタンのIDを呼び出す方法ももありますが、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

Viewにマーキングするわけですね、色々としがらみがなく使えるということでしょうか
 

Button array

 
とりあえず作ってみたいと思います。
ボタンにsetTag(“1”)を設定

view.getTag()で取り出す

 

ボタンを配列で作成して、こういう形でtagを付けて後でタップで取り出せるようにします。
 
MainActivity.java

 

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

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