| package com.doumee.lib_coremodel.binding.viewadapter.viewpager; | 
|   | 
|   | 
| import androidx.databinding.BindingAdapter; | 
| import androidx.viewpager.widget.ViewPager; | 
|   | 
| import com.doumee.lib_coremodel.binding.command.BindingCommand; | 
|   | 
| /** | 
|  * Created by goldze on 2017/6/18. | 
|  */ | 
| public class ViewAdapter { | 
|     @BindingAdapter(value = {"onPageScrolledCommand", "onPageSelectedCommand", "onPageScrollStateChangedCommand"}, requireAll = false) | 
|     public static void onScrollChangeCommand(final ViewPager viewPager, | 
|                                              final BindingCommand<ViewPagerDataWrapper> onPageScrolledCommand, | 
|                                              final BindingCommand<Integer> onPageSelectedCommand, | 
|                                              final BindingCommand<Integer> onPageScrollStateChangedCommand) { | 
|         viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { | 
|             private int state; | 
|   | 
|             @Override | 
|             public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { | 
|                 if (onPageScrolledCommand != null) { | 
|                     onPageScrolledCommand.execute(new ViewPagerDataWrapper(position, positionOffset, positionOffsetPixels, state)); | 
|                 } | 
|             } | 
|   | 
|             @Override | 
|             public void onPageSelected(int position) { | 
|                 if (onPageSelectedCommand != null) { | 
|                     onPageSelectedCommand.execute(position); | 
|                 } | 
|             } | 
|   | 
|             @Override | 
|             public void onPageScrollStateChanged(int state) { | 
|                 this.state = state; | 
|                 if (onPageScrollStateChangedCommand != null) { | 
|                     onPageScrollStateChangedCommand.execute(state); | 
|                 } | 
|             } | 
|         }); | 
|   | 
|     } | 
|   | 
|     public static class ViewPagerDataWrapper { | 
|         public float positionOffset; | 
|         public float position; | 
|         public int positionOffsetPixels; | 
|         public int state; | 
|   | 
|         public ViewPagerDataWrapper(float position, float positionOffset, int positionOffsetPixels, int state) { | 
|             this.positionOffset = positionOffset; | 
|             this.position = position; | 
|             this.positionOffsetPixels = positionOffsetPixels; | 
|             this.state = state; | 
|         } | 
|     } | 
| } |