封装ViewPager适配器简单封装
2017-06-05 13:04
351 查看
public class MainActivity extends AppCompatActivity { // 数据源 static List<String> datas = new ArrayList<>(); static{ datas.add("java"); datas.add("android"); datas.add("ios"); datas.add("html5"); datas.add("https"); } private CommonViewPagerAdapter mAdapter; // 适配器 private ViewPager mPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { mPager = (ViewPager)findViewById(R.id.vp); mAdapter = new CommonViewPagerAdapter(datas, new ViewPagerHolderCreator() { @Override public ViewPagerHolder createViewHolder() { return new MyViewPagerHolder(); } }); mPager.setAdapter(mAdapter); } private class MyViewPagerHolder implements ViewPagerHolder<String>{ private TextView title; @Override public View createView(Context context) { View view = LayoutInflater.from(context).inflate(R.layout.view_item, null); title = (TextView) view.findViewById(R.id.tv_title); return view; } @Override public void onBind(Context context, int position, String data) { title.setText(String.format("position:%d -- title:%s", position, data)); } }}
public class CommonViewPagerAdapter<T> extends PagerAdapter {
private List<T> mDatas;// 数据源
private ViewPagerHolderCreator mCreator; // 布局
public CommonViewPagerAdapter(List<T> datas, ViewPagerHolderCreator creator){
this.mDatas = datas;
this.mCreator = creator;
}
@Override
public int getCount() {
return mDatas.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
// 重点在这儿了,不要把布局写死,而是通过接口提供布局
// 也不再这里绑定数,数据绑定交个A调用者
View view = getView(position, null, container);
container.addView(view);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
private View getView(int position , View view, ViewGroup container){
ViewPagerHolder holder = null;
if (holder == null){
holder = mCreator.createViewHolder();
view = holder.createView(container.getContext());
view.setTag(R.id.common_view_pager_item_tag, holder);
}else{
holder = (ViewPagerHolder) view.getTag(R.id.common_view_pager_item_tag);
}
if(holder != null && mDatas != null && mDatas.size() > 0){
holder.onBind(container.getContext(), position, mDatas.get(position));
}
return view;
}
}
public interface ViewPagerHolder<T> {
/**
* 创建View
* @param context
* @return
*/
View createView(Context context);
/**
* 绑定数
* @param context
* @param position
* @param data
*/
void onBind(Context context, int position, T data);
}
public interface ViewPagerHolderCreator<VH extends ViewPagerHolder> {
/**
* 创建ViewHolder
* @return
*/
VH createViewHolder();
}
相关文章推荐
- 擦!RecyclerView的适配器确实比listview的简单些,因为tag都做了封装了
- RecyclerView适配器的简单封装-BaseAdapter
- 一个简单的viewpager适配器
- Android中RecyclerView的适配器的简单封装
- viewpager+fragment简单适配器
- RecyclerView的适配器简单封装,再也不用重复写适配器了
- ViewPager的简单用法+适配器+监听器的介绍
- android ViewPager+Fragment封装无限循环ViewPager
- Android 关于ViewPager结合碎片Fragment的简单使用
- ViewPager简单使用
- ViewPager的简单应用
- viewpager的简单使用
- ViewPager的简单应用
- ViewPager的简单使用
- 另一种方法:当使用ViewPager加载大量View时卡顿严重的简单解决方法
- 使用Viewpager制作图片阅读器(1)-简单实现
- 无限循环 动态删除 添加 viewpager适配器
- Android的使用ViewPager简单实例【类似tab翻页】
- android 中ViewPager动态加载数据的简单demo
- ViewPager的简单使用说明