トップ » はっかかー日記 » AndroidでBeans Binding(JSR295)は使えるか?

AndroidでBeans Binding(JSR295)は使えるか?

タグ: Android Java

ぼーっとAndroidのJavaDocを眺めているとPropertyChangeListenerがあることに気がつきました。ということは、もしかしてBeans Binding(JSR295)も、使えるのかなと思い試してみました。

というわけで、さっそくViewを作って、コードを書こうとしたのですが、

Binding

あ、

EditTextにもTextViewにもPropertyChangeListenerを登録できない。。。

いきなり結論がでました。Beans Bindingは使えない。(Viewを作る前に気づくべきです。)

仕方ないので別の方法でお茶をにごすテスト。(addTextChangedListenerでテキストの変更は監視できるようです。)

package net.hakkaku.android.binding;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.TextView;

public class BindingTest extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		((EditText) findViewById(R.id.edit))
				.addTextChangedListener(new TextWatcher() {
					@Override
					public void afterTextChanged(Editable s) {
					}

					@Override
					public void beforeTextChanged(CharSequence s, int start,
							int count, int after) {
					}

					@Override
					public void onTextChanged(CharSequence s, int start,
							int before, int count) {
						((TextView) findViewById(R.id.text)).setText(s);
					}
				});
	}
}
Binding2 

一応、目的の動作はできたけれど・・・

ViewにPropertyChangeListerをセット出来ないのは、ちょっとショックでした。ただ、AndroidのViewは、設定できるプロパティの数も多く、PropertyChangeListenerをサポートしてまうと、頻繁にリスナが呼ばれることになり、パフォーマンス上問題があるのかなとも思いました。

また、バイトコードをコネコネしたりAOPを使えば無理矢理PropertyChangeListerを登録できるかもしれませんが、必要に迫られている訳でもないので、そこまでは試していません。いつか、暇なときにでもやってみたいと思います。


執筆者紹介

ツナ缶

ツナ缶

TrackBack URL :