Android Data Binding
Android Data Bindingを使うと、LayoutファイルとJavaコードをBindingすることができます。データのセットやイベントハンドリングが容易になります。
概要とセットアップ方法はこちらに
https://developer.android.com/topic/libraries/data-binding/index.html
Buttonのリスナー
ボタン押下を受け取る
View.OnClickListenerインターフェイスを実装する。
public View.OnClickListener getOnClickListener() {
return new View.OnClickListener() {
@Override
public void onClick(View v) {
}
};
}
実装したView.OnClickListenerインターフェイスをlayoutファイルにセットする。
<data>
<variable name="fragment"
type="jp.baroqueworksdev.sample.SampleFragment"/>
</data>
<android.support.v7.widget.AppCompatButton
app:setOnClickListener="@{fragment.getOnClickListener}"/>
同様にFloatingActionButtonにOnClickListenerをセットすることも可能です。
<android.support.design.widget.FloatingActionButton
app:setOnClickListener="@{fragment.fabOnClickListener}"/>
EditTextのリスナー
Textの変更通知
Textが変更通知を受け取るために、TextWatcherインターフェイスを実装する。
public TextWatcher getEditTextWatcher() {
return new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int start, int count,
int after) {
}
@Override
public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
// FIXME: when change text
}
@Override
public void afterTextChanged(Editable editable) {
}
};
}
実装したTextWatcherインターフェイスをlayoutファイルにセットする。
<data>
<variable name="fragment"
type="jp.baroqueworksdev.sample.SampleFragment"/>
</data>
<android.support.v7.AppCompatEditText
app:addTextChangedListener="@{fragment.getEditTextWatcher}"/>
Spinnerのリスナー
アイテム選択を受け取る
AdapterView.OnItemSelectedListenerインターフェイスを実装する。field変数として定義することも可能です。
public AdapterView.OnItemSelectedListener mOnItemSelectedListener =
new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
long id) {
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
};
layoutファイルは、field変数で指定可能です。
<data>
<variable name="fragment"
type="jp.baroqueworksdev.sample.SampleFragment"/>
</data>
<android.support.v7.widget.AppCompatSpinner
app:onItemSelectedListener="@{fragment.mOnItemSelectedListener}"/>
ViewPagerのリスナー
Pageの変更通知を受け取る
public ViewPager.OnPageChangeListener mOnPageChangeListener
= new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
};
実装したインターフェイスをlayoutファイルにセットする。
<data>
<variable name="fragment"
type="jp.baroqueworksdev.sample.SampleFragment"/>
</data>
<android.support.v4.view.ViewPager
app:addOnPageChangeListener="@{fragment.mOnPageChangeListener}"/>
(随時、更新します)