SeekBarBindingAdapter.java revision 96b22e7bbbf942aea1079dc8e8d0c4657663e5a7
1/*
2 * Copyright (C) 2015 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package android.databinding.adapters;
17
18import android.databinding.BindingAdapter;
19import android.widget.SeekBar;
20import android.widget.SeekBar.OnSeekBarChangeListener;
21
22public class SeekBarBindingAdapter {
23    @BindingAdapter(value = {"android:onStartTrackingTouch", "android:onStopTrackingTouch",
24            "android:onProgressChanged"}, requireAll = false)
25    public static void setOnSeekBarChangeListener(SeekBar view, final OnStartTrackingTouch start,
26            final OnStopTrackingTouch stop, final OnProgressChanged progressChanged) {
27        if (start == null && stop == null && progressChanged == null) {
28            view.setOnSeekBarChangeListener(null);
29        } else {
30            view.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
31                @Override
32                public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
33                    if (progressChanged != null) {
34                        progressChanged.onProgressChanged(seekBar, progress, fromUser);
35                    }
36                }
37
38                @Override
39                public void onStartTrackingTouch(SeekBar seekBar) {
40                    if (start != null) {
41                        start.onStartTrackingTouch(seekBar);
42                    }
43                }
44
45                @Override
46                public void onStopTrackingTouch(SeekBar seekBar) {
47                    if (stop != null) {
48                        stop.onStopTrackingTouch(seekBar);
49                    }
50                }
51            });
52        }
53    }
54
55    public interface OnStartTrackingTouch {
56        void onStartTrackingTouch(SeekBar seekBar);
57    }
58
59    public interface OnStopTrackingTouch {
60        void onStopTrackingTouch(SeekBar seekBar);
61    }
62
63    public interface OnProgressChanged {
64        void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser);
65    }
66}
67