android ViewPager TabLayout 动态创建问题

android 中TabLayout 加上ViewPager 中加Fragment 实现类似今日头条首页目录

一天产品对你说;这个首页不能这样展示;要根据每个地区,或者每个人的不同来动态的更绘制首页数据。首先问题是那就会出现android 中的小坑坑了。废话不说了

1.首先是这个adapter怎么更新;做过ViewPager轮播删除图片的人都知道,这个notifyDataSetChanged 开始不起作用。
/**
* Called when the host view is attempting to determine if an item's position
* has changed. Returns {@link #POSITION_UNCHANGED} if the position of the given
* item has not changed or {@link #POSITION_NONE} if the item is no longer present
* in the adapter.
*
*

The default implementation assumes that items will never
* change position and always returns {@link #POSITION_UNCHANGED}.
*
* @param object Object representing an item, previously returned by a call to
* {@link #instantiateItem(View, int)}.
* @return object's new position index from [0, {@link #getCount()}),
* {@link #POSITION_UNCHANGED} if the object's position has not changed,
* or {@link #POSITION_NONE} if the item is no longer present.
*/
public int getItemPosition(Object object) {
return POSITION_UNCHANGED;
}
返回POSITION_NONE 然后再notifyDataSetChanged。这个只是表达ViewPager 的adapter 的数据更新问题;

2.FragmentPagerAdapter 与FragmentStatePagerAdapter
FragmentPagerAdapter 在每次切换页面的时候,是将Fragment 进行分离,适合页面较少的Fragment使用。保存一些内存。对系统内存没有太大影响
FragmentStatePagerAdapter在每次切换的切面的时候;是将Fragment 进行回收,适合页面较多的Fragment使用,这样不会消耗太多内存。
看太这里你会发现似乎有些思路了是吧!
3.上述两种只是一点概念铺垫和本文的解决方式没有太大关系;
具体解决方式
(1)在xml 文件或者代码中创建一个布局例如LinearLayout。
(2)在获取数据后,根据数据用代码动态创建ViewPager
用(1)创建的布局add(ViewPager),每次添加之前 removeAllViews();
(3)创建你需要的适配器,与TabLayout 关联ViewPager。
这样就完成了
有什么问题大家请@我留言一下。大家互相探讨一下

android ViewPager TabLayout 动态创建问题_第1张图片
Paste_Image.png

你可能感兴趣的:(android ViewPager TabLayout 动态创建问题)