【Android】OnClickListenerから親要素のViewをたどってみる


例えば下記のようなコードで、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の内容を変更したいときは多いと思うので覚えておくとベンリ

コメントを残す

メールアドレスが公開されることはありません。