一:简单的实现viewpage进行fragment的滑动切换

public class LcVpFragment extends Fragment{@Overridepublic void onActivityCreated(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onActivityCreated(savedInstanceState);List listviews  = new ArrayList();TransFragment trs = new TransFragment();trs.setArguments(getArguments());//传参数listviews.add(new NextPagerFragment()); listviews.add(trs); listviews.add(new NextPagerFragment()); ViewPager myviewpage = (ViewPager)getActivity().findViewById(R.id.trans_page);    TransFragmentPagerAdapter mypagetadapter = new TransFragmentPagerAdapter(getActivity().getSupportFragmentManager(),listviews);       myviewpage.setAdapter(mypagetadapter);  }@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubreturn inflater.inflate(R.layout.myviewpager, container, false);//return super.onCreateView(inflater, container, savedInstanceState);}}

继承Fragment适配器FragmentPagerAdapter,Fragment的适配器比较简单

public class TransFragmentPagerAdapter extends FragmentPagerAdapter {List fragments; public TransFragmentPagerAdapter(FragmentManager fm,List _fragments){super(fm);this.fragments = _fragments;}public TransFragmentPagerAdapter(FragmentManager fm) {super(fm);// TODO Auto-generated constructor stub}@Overridepublic Fragment getItem(int arg0) {// TODO Auto-generated method stubreturn fragments.get(arg0);}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn fragments.size();}}


二:利用viewpager滑动分页1(不推荐,使用setCurrentItem(1)始终效果不理想,而且滑动后需要重新加载数据)

滑动分页技巧,viewpager里边添加三个fragment,其中两个先显示进度条,

 有三个fragment就可以向右向左滑动,以模拟上一页下一页,当滑动到其他页就加载数据,加载完后设置myviewpage.setCurrentItem(1),

 就又可以进行左右滑动了,由于设置myviewpage.setCurrentItem(1)不要有滑动效果不然用户不友好,可以反射改变etCurrentItem(1)

 的速度http://blog.csdn.net/aojiancc2/article/details/40427207


这里要主要几点,viewpager进行fragment管理时生命周期是比如ViewPager有5个page,刚打开的时候,会加载page1和page2.....,我们手动切换到page2的时候,会加载page3,切换到page3的时候,加载page4的同时会destory掉page1

所以不要想到滑动到下一页的时候会执行分页fragment的创建方法,应该自己写数据获得方法,自己在滑动结束事件里边调用


1:创建分页滑动viewpager主容器,这里也是一个fragment

public class LcVpFragment extends Fragment{@Overridepublic void onActivityCreated(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onActivityCreated(savedInstanceState);List listviews  = new ArrayList(); ViewPager myviewpage = (ViewPager)getActivity().findViewById(R.id.trans_page);   TransFragment trs = new TransFragment();trs.setArguments(getArguments());//传参数NextPagerFragment next =new NextPagerFragment(myviewpage,trs);next.setArguments(getArguments());NextPagerFragment previous =new NextPagerFragment(myviewpage,trs);previous.setArguments(getArguments());listviews.add(previous); listviews.add(trs); listviews.add(next);   TransFragmentPagerAdapter mypagetadapter = new TransFragmentPagerAdapter(getActivity().getSupportFragmentManager(),listviews);       myviewpage.setAdapter(mypagetadapter);            myviewpage.setCurrentItem(1);          MyOnPageChangeListener mo = new MyOnPageChangeListener(myviewpage,listviews);     myviewpage.setOnPageChangeListener(mo);}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubreturn inflater.inflate(R.layout.myviewpager, container, false);}}

2:为viewpager设置滑动事件这里很关键

class MyOnPageChangeListener implements OnPageChangeListener{int currentpage = 1;ViewPager myviewpage;List listviews;public MyOnPageChangeListener(ViewPager _myviewpage,List _listviews){listviews = _listviews;myviewpage = _myviewpage;}public void onPageScrollStateChanged(int arg0) {// TODO Auto-generated method stub}public void onPageScrolled(int _current, float arg1, int arg2) {}public void onPageSelected(int _current) {if(_current == 1)return;// TODO Auto-generated method stubif(_current==0)//上一页{if(currentpage == 1)//已经是第一页了{myviewpage.setCurrentItem(1);return;}currentpage--;}else if(_current==2)//下一页{currentpage++;}//获取到分页fragment执行GetData查询当前页数据,然后把数据传递到展示数据的fragment在进行切换即可NextPagerFragment nex = (NextPagerFragment)listviews.get(_current);nex.GetData(currentpage);}   }

3:分页fragment

public class NextPagerFragment extends Fragment{ViewPager myviewpage;TransFragment trs;public NextPagerFragment(ViewPager _myviewpage,TransFragment _trs){myviewpage = _myviewpage;trs = _trs;}@Overridepublic void onActivityCreated(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onActivityCreated(savedInstanceState);}public void GetData(int current){ System.out.println("当前第几页:"+current); String phpsession = getArguments().getString("laravel_session"); new TransportationData().getData_hp(phpsession,new Action() {public void action(String _data) {  Message message = new Message();           message.obj = _data;           handler.sendMessage(message);  }  },current);}@SuppressLint("HandlerLeak")final Handler handler = new Handler(){     public void handleMessage(Message msg) {             trs.SetPageData(String.valueOf(msg.obj));//为数据展示的fragment加载数据myviewpage.setCurrentItem(1);//然后进行切换    }};@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubreturn inflater.inflate(R.layout.nextpager, container, false);}}


4:负责数据显示的frament这里给出简单的展示

public class TransFragment extends Fragment{@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubreturn inflater.inflate(R.layout.mytable_trans, container, false);//return super.onCreateView(inflater, container, savedInstanceState);}public void SetPageData(String _pagedata){setData(String.valueOf(_pagedata));}public void setData(String _data){//加载数据即可}@Overridepublic void onActivityCreated(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onActivityCreated(savedInstanceState);GetData();}}



http://www.cnblogs.com/tiantianbyconan/p/3364728.html

http://www.360doc.com/content/13/1115/23/14218823_329558883.shtml

http://www.2cto.com/kf/201404/292031.html


三:利用viewpager滑动分页2


其实viewpager添加多个fragment,利用他的加载方式可以很轻松的实现滑动分页

1:加载需要分页的fragment

for(int i=0;i<4;i++)   {   Bundle bu = new Bundle();         bu.putInt("cpage",i+1);   TransFragment trs = new TransFragment();   trs.setArguments(bu);   listviews.add(trs);    }


2:fragment

注意这里fragment所有的控件都要后台新生成,因为都是用的同一个类,如果加载同一个布局文件会有冲突

LinearLayout layout;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stublayout=new LinearLayout(getActivity());  ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(                ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);    layout.setOrientation(LinearLayout.VERTICAL);//显示方向    layout.setLayoutParams(params);            return layout;//return inflater.inflate(R.layout.mytable_trans, container, false);//return super.onCreateView(inflater, container, savedInstanceState);}

@Overridepublic void onActivityCreated(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onActivityCreated(savedInstanceState);int cpage = getArguments().getInt("cpage");GetData(cpage);}

当然在需要的时候可以调用fragment集合,取出需要的fragment调用getdata方法,实现刷新,例如

public void onPageSelected(int _current) {((CargoinfoFragment) listviews.get(_current)).GetData(_current);} 

当删除了需要刷新时,可以在FragmentActivity类重新加载一次分页的fragemt,但是要注意先把以前的删除掉,不能数据可能会错乱

public void switchContent(Fragment fragment,boolean isdelete) {if(isdelete){List li = getSupportFragmentManager().getFragments();        for(int i=0;i



  








更多相关文章

  1. 代码讲解Android(安卓)Scroller、VelocityTracker
  2. android 做登陆与mysql数据库交互
  3. Android(安卓)ScrollView里嵌套ListView
  4. android:SQlite
  5. Android(安卓)蓝牙模块框架分析
  6. [Android官方Demo系列] PageTransformer缩放滑动
  7. Android(安卓)java List 转Json格式
  8. Android(安卓)联系人选择Widget
  9. mybatisplus的坑 insert标签insert into select无参数问题的解决

随机推荐

  1. Android(安卓)横屏竖屏切换
  2. EditText属性大全
  3. Android:Gravity控制格式
  4. android:maxLines和android:ellipsize同
  5. Android开发资源整理
  6. 源码解析Android中AsyncTask的工作原理
  7. RelativeLayout
  8. 对android的android:taskAffinity初识
  9. android view的几种布局方式
  10. Android中Handler引起的内存泄露