8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Android Data BindingでListener登録

Last updated at Posted at 2016-09-10

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}"/>

(随時、更新します)

8
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?