package com.mfh.comna.widget; import android.annotation.SuppressLint; import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; import com.mfh.comna.api.widgets.PagerSlidingTabStrip; import com.mfh.comna.R; import java.util.ArrayList; @SuppressLint("Recycle") public class ViewPageFragmentAdapter extends FragmentStatePagerAdapter { private final Context mContext; protected PagerSlidingTabStrip mPagerStrip; private final ViewPager mViewPager; private final ArrayList<ViewPageInfo> mTabs = new ArrayList<ViewPageInfo>(); public ViewPageFragmentAdapter(FragmentManager fm, PagerSlidingTabStrip pageStrip, ViewPager pager) { super(fm); mContext = pager.getContext(); mPagerStrip = pageStrip; mViewPager = pager; mViewPager.setAdapter(this); mPagerStrip.setViewPager(mViewPager); } public void addTab(String title, String tag, Class<?> clss, Bundle args) { ViewPageInfo viewPageInfo = new ViewPageInfo(title, tag, clss, args); addFragment(viewPageInfo); } public void addAllTab(ArrayList<ViewPageInfo> mTabs) { for (ViewPageInfo viewPageInfo : mTabs) { addFragment(viewPageInfo); } } private void addFragment(ViewPageInfo info) { if (info == null) { return; } // 加入tab title View v = LayoutInflater.from(mContext).inflate( R.layout.base_viewpage_fragment_tab_item, null, false); TextView title = (TextView) v.findViewById(R.id.tab_title); title.setText(info.title); mPagerStrip.addTab(v); mTabs.add(info); notifyDataSetChanged(); } /** * 移除第一次 */ public void remove() { remove(0); } /** * 移除一个tab * * @param index * 备注:如果index小于0,则从第一个开始删 如果大于tab的数量值则从最后一个开始删除 */ public void remove(int index) { if (mTabs.isEmpty()) { return; } if (index < 0) { index = 0; } if (index >= mTabs.size()) { index = mTabs.size() - 1; } mTabs.remove(index); mPagerStrip.removeTab(index, 1); notifyDataSetChanged(); } /** * 移除所有的tab */ public void removeAll() { if (mTabs.isEmpty()) { return; } mPagerStrip.removeAllTab(); mTabs.clear(); notifyDataSetChanged(); } @Override public int getCount() { return mTabs.size(); } @Override public int getItemPosition(Object object) { return PagerAdapter.POSITION_NONE; } @Override public Fragment getItem(int position) { ViewPageInfo info = mTabs.get(position); return Fragment.instantiate(mContext, info.clss.getName(), info.args); } @Override public CharSequence getPageTitle(int position) { return mTabs.get(position).title; } }