Android UI ToolkitチームのYigit BoyarとGeorge Mountメンバーはtalk on databindingでした。ビデオの13:41にGeorge Mountがこう言っています。データバインディング:リスナーから複数のメソッドを使用して単一のメソッドをバインドします
また、onTextChangedのような奇妙なリスナーを行うこともできます。 TextWatcherには3つのメソッドがありますが、誰もが onTextChangedだけ気にします。 が必要な場合は、実際にそのうちの1つにしかアクセスできません。「
<Button android:onTextChanged="@{handlers.textChanged}" …/>
彼は、代わりにこの
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
//Do something
}
@Override
public void afterTextChanged(Editable editable) {}
});
ようになり、通常addTextChangedListener方法を使用しての我々は単にこの
<EditText
android:onTextChanged="@{handlers::onTextChanged}"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
ハンドラクラスを行うことができると言っているように見えました
コードはこのインスタンスでは機能しますが、リスナーにViewPagerのaddOnPageChangeListenerメソッドのような複数のメソッドがある場合は動作しないようです。たとえば、これは
<android.support.v4.view.ViewPager
android:OnPageSelected="@{handlers::onPageSelected}"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
とハンドラクラスは動作しません
public class Handlers{
public void onPageSelected(int position) {
//Do something
}
}
プロジェクトは、私は今ので少し混乱してい
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> java.lang.RuntimeException: Found data binding errors.
****/ data binding error ****msg:Could not resolve handlers::onPageSelected as a listener.
****\ data binding error ****
を構築しようとしているこのエラーを吐きますEditTextは実際に継承されたonTextChangedメソッドを持ち、データバインディングライブラリはandroid:onTextChanged="@{handlers::onTextChanged}"
にバインドすることもできます。
私の質問は、実際には1つのリスナーメソッドにバインドすることが可能で、何かが欠落しているか、ジョージマウントさんが彼の話に間違いを感じましたか?
すごいです!馬の口からまっすぐ答えてください:) – Olumide