package gueei.binding.v30.viewAttributes.adapterView.viewPager;
import gueei.binding.BindingType;
import gueei.binding.ViewAttribute;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.widget.Adapter;
public class AdapterViewAttribute extends ViewAttribute<ViewPager, PagerAdapter> {
public AdapterViewAttribute
(ViewPager view) {
super(PagerAdapter.class,view, "adapter");
}
@Override
protected void doSetAttributeValue(Object newValue) {
if(getView()==null) return;
if (newValue instanceof PagerAdapter){
getView().setAdapter((PagerAdapter)newValue);
return;
}
if (newValue instanceof Adapter){
getView().setAdapter(new PagerAdapterBridge((Adapter)newValue));
return;
}
}
@Override
public PagerAdapter get() {
if(getView()==null) return null;
return getView().getAdapter();
}
@Override
protected BindingType AcceptThisTypeAs(Class<?> type) {
if (Adapter.class.isAssignableFrom(type)) return BindingType.OneWay;
return super.AcceptThisTypeAs(type);
}
private class PagerAdapterBridge extends PagerAdapter{
private final Adapter mAdapter;
public PagerAdapterBridge(Adapter adapter){
mAdapter = adapter;
}
@Override
public int getCount() {
return mAdapter.getCount();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0.equals(arg1);
}
public Object instantiateItem(View collection, int position){
android.support.v4.view.ViewPager viewPager = (android.support.v4.view.ViewPager)collection;
View view = mAdapter.getView(position, null, viewPager);
viewPager.addView(view);
return view;
}
@Override
public void destroyItem(View container, int position, Object object) {
android.support.v4.view.ViewPager viewPager = (android.support.v4.view.ViewPager)container;
viewPager.removeView((View)object);
return;
}
}
}