像适配ListView一样适配ViewPager的的PagerAdapter
来源:互联网 发布:数据库采集技术 编辑:程序博客网 时间:2024/06/02 03:19
源码:
public abstract class BasePagerAdapter<T> extends PagerAdapter { protected Context context; private List<T> list; private List<View> views; private int notifyCount; public BasePagerAdapter(Context context) { this.context = context; this.list = new ArrayList<>(); views = new ArrayList<>(); } public void clear() { list.clear(); } public void reload(Collection<? extends T> collection) { clear(); loadMore(collection); } public void loadMore(Collection<? extends T> collection) { list.addAll(collection); notifyDataSetChanged(); } public abstract View getView(int position, ViewGroup parent); @Override public int getCount() { return list != null ? list.size() : 0; } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } public T getItem(int position) { return list.get(position); } @Override public Object instantiateItem(ViewGroup container, int position) { View view; if (views.size() <= position) { view = getView(position, container); views.add(view); } else { view = views.get(position); } if (view.getParent() == null){ container.addView(view); } return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { if (views.size() > position) { container.removeView(views.get(position)); } } protected LayoutInflater getLayoutInflater() { return LayoutInflater.from(context); } // ViewPager的更新,http://www.cnblogs.com/maoyu417/p/3740209.html @Override public void notifyDataSetChanged() { super.notifyDataSetChanged(); notifyCount = getCount(); } @Override public int getItemPosition(Object object) { if (notifyCount > 0) { notifyCount--; return POSITION_NONE; } return super.getItemPosition(object); }}
使用:
public class SamplePagerAdapter extends BasePagerAdapter<SomeObject> { public SamplePagerAdapter(Context context) { super(context); } @Override public View getView(int position, ViewGroup parent) { View itemView = getLayoutInflater().inflate(R.layout.*, parent, false); ViewHolder viewHolder = new ViewHolder(itemView); SomeObject obj = getItem(position); ... return itemView; } static class ViewHolder { @BindView(R.id.item_image) SimpleDraweeView itemImage; @BindView(R.id.title_text) TextView titleText; @BindView(R.id.price_text) TextView priceText; @BindView(R.id.address_text) TextView addressText; @BindView(R.id.create_time_text) TextView createTimeText; ViewHolder(View view) { ButterKnife.bind(this, view); } }}
1 0
- 像适配ListView一样适配ViewPager的的PagerAdapter
- ViewPager的PagerAdapter.notifyDataSetChanged()
- ViewPager+PagerAdapter的使用
- ViewPager的适配器PagerAdapter
- [ViewPager、一]ViewPager和PagerAdapter做动态加载页(类似listView适配根据data新增的效果)
- ViewPager的PagerAdapter的介绍
- ViewPager的PagerAdapter的介绍
- ViewPager的PagerAdapter的封装
- ViewPager的PagerAdapter适配器使用
- ViewPager 放PagerAdapter 的notifyDataSetChanged()
- viewpager-----View作为ViewPager的数据源(PagerAdapter)
- ViewPager的PagerAdapter的四个方法解析
- Android--ViewPager的PagerAdapter的介绍
- ViewPager的使用,PagerAdapter的自定义改写
- 关于viewpager的适配器pageradapter的详解
- ViewPager的pageradapter加载视图的机制
- Android基础--ViewPager的PagerAdapter的介绍
- ViewPager的PagerAdapter不可以更新数据
- C 函数传参数留意事项
- ajax上传文件
- char和int的转换关系
- 485. Max Consecutive Ones
- 浅谈单片机程序设计中的“分层思想”
- 像适配ListView一样适配ViewPager的的PagerAdapter
- Jdbc Person
- 有关main方法的几个小知识点
- 浅析Android数据存储
- HOG特征、LBP特征、Harr特征
- qt+opencv基本
- Eclipse启动时报错:A Java RunTime Environment (JRE) or Java Development Kit (JDK) must be available in ord
- django admin save_module 导入
- WIN10配置NGINX+PHP环境