package com.kelin.mvvmlight.bindingadapter.viewpager;
import android.databinding.BindingAdapter;
import android.support.v4.view.ViewPager;
import com.kelin.mvvmlight.command.ReplyCommand;
/**
* Created by kelin on 16-6-1.
*/
public class ViewBindingAdapter {
@BindingAdapter(value = {"onPageScrolledCommand", "onPageSelectedCommand", "onPageScrollStateChangedCommand"}, requireAll = false)
public static void onScrollChangeCommand(final ViewPager viewPager,
final ReplyCommand<ViewPagerDataWrapper> onPageScrolledCommand,
final ReplyCommand<Integer> onPageSelectedCommand,
final ReplyCommand<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;
}
}
}