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); } }