package com.aincc.lib.ui.widget.page;
import java.lang.ref.WeakReference;
import java.util.List;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import com.aincc.lib.util.Utils;
/**
*
* <h3><b>APager</b></h3></br>
*
* ViewPager 의 확장<br>
*
* @author aincc@barusoft.com
* @version 1.0.0
* @since 1.0.0
*/
public class APagerAdapter extends PagerAdapter
{
protected Context context;
protected LayoutInflater inflater;
protected WeakReference<View> view;
protected List<? extends PageItem> pages;
protected OnPagerClickListener listener;
/**
*
* @since 1.0.0
* @param context
*/
public APagerAdapter(Context context, List<? extends PageItem> pages)
{
super();
this.context = context;
this.pages = pages;
inflater = LayoutInflater.from(context);
}
/**
*
* @since 1.0.0
* @param l
*/
public void setOnPagerClickListener(OnPagerClickListener l)
{
this.listener = l;
}
@Override
public int getCount()
{
if (null != pages)
{
return pages.size();
}
return 0;
}
@Override
public Object instantiateItem(ViewGroup container, final int position)
{
PageItem page = pages.get(position);
view = new WeakReference<View>(inflater.inflate(page.layout, null));
view.get().setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
if (null != listener)
{
listener.onPagerClicked(position);
}
}
});
container.addView(view.get(), 0);
return view.get();
}
@Override
public void destroyItem(ViewGroup container, int position, Object object)
{
// ((ViewPager) container).removeView((View) object);
Utils.unbindDrawables((View) object);
((ViewPager) container).removeView((View) object);
object = null;
}
@Override
public boolean isViewFromObject(View view, Object obj)
{
return view == obj;
}
/**
*
* <h3><b>PageItem</b></h3></br>
*
* 기본 페이지 아이템
*
* @author aincc@barusoft.com
* @version 1.0.0
* @since 1.0.0
*/
public static class PageItem
{
/**
* 레이아웃 아이디
*/
public int layout;
public PageItem(int layout)
{
this.layout = layout;
}
}
/**
*
* <h3><b>OnPagerClickListener</b></h3></br>
*
* 페이지 클릭 리스너
*
* @author aincc@barusoft.com
* @version 1.0.0
* @since 1.0.0
*/
public interface OnPagerClickListener
{
public void onPagerClicked(int position);
}
}