Skip to content

Instantly share code, notes, and snippets.

@aucd29
Created May 9, 2018 08:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aucd29/28e7c50e9b9706f79525e828bd8e9c87 to your computer and use it in GitHub Desktop.
Save aucd29/28e7c50e9b9706f79525e828bd8e9c87 to your computer and use it in GitHub Desktop.
viewpager binding adapter
<layout>
<data>
<variable
name="adapter"
type="path" />
</data>
...
</layout>
public class ViewPagerBindingAdapter {
private static final Logger mLog = LoggerFactory.getLogger(ViewPagerBindingAdapter.class);
@InverseBindingAdapter(attribute = "app:currentItem")
public static int currentItem(@NonNull ViewPager viewpager) {
return viewpager.getCurrentItem();
}
@BindingAdapter("bindOffscreenPageLimit")
public static void bindOffscreenPageLimit(@NonNull ViewPager viewpager, int limit) {
viewpager.setOffscreenPageLimit(limit);
}
@BindingAdapter("bindAdapter")
public static void bindAdapter(@NonNull ViewPager viewpager, FragmentPagerAdapter adapter) {
if (mLog.isTraceEnabled()) {
mLog.trace("BIND ADAPTER " + adapter);
}
viewpager.setAdapter(adapter);
}
@BindingAdapter("bindPageChangeListener")
public static void bindPageChangeListener(@NonNull ViewPager viewpager, ViewPager.OnPageChangeListener listener) {
if (mLog.isTraceEnabled()) {
mLog.trace("BIND PAGE CHANGE LISTENER");
}
viewpager.addOnPageChangeListener(listener);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment