例えば下記のようなコードで、textView の中身を変更したいみたいな時があった場合、自身の親から View をたどることが出来る。
class MainActivity extends Activity {
Button mBtn;
TextView textView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
textView = (TextView) findViewById(R.id.textView);
mBtn = (Button) findViewById(R.id.btn1);
mBtn.setOnClickListener(buttonListener);
}
private OnClickListener buttonListener = new OnClickListener() {
@Override
public void onClick(View v) {
}
};
}
実装方法
やり方としては、下記のように ViewGroup を取得して子ビューを探していけばいい
private OnClickListener buttonListener = new OnClickListener() {
@Override
public void onClick(View v) {
TextView textView = null;
ViewGroup vg = (ViewGroup) v.getParent();
for (int i = 0 ; i < vg.getChildCount() ; i++) {
View view = vg.getChildAt(i);
if (view instanceof TextView) {
textView = (TextView) view;
break;
}
}
if (textView != null)
textView.setText("テキストを変更");
}
};
特にループして全て見る必要はないので、順番が決まっていたら 「textView = (TextView) vg.getChildAt(0);」 みたいにして取得してもいいと思う。 それなりにタッチした View の隣の View の内容を変更したいときは多いと思うので覚えておくとベンリ