300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > ViewPager+Fragment+广播来实现一个滑动页面切换【HTML】

ViewPager+Fragment+广播来实现一个滑动页面切换【HTML】

时间:2020-07-01 07:03:33

相关推荐

ViewPager+Fragment+广播来实现一个滑动页面切换【HTML】

web前端|html教程

ViewPager+Fragment+广播来实现一个滑动页面切换

web前端-html教程

要实现这样一个页面,上面的好说,下面的是一个滑动视图,我们想到的是用viewpager来实现,但是这个有一个问题,按照平时的写法,我们会写5个Activity放到viewpager里面去,这自然是可以实现的。但是这里有一个问题,一进来,在主界面manager.startActivity(id, intent).getDecorView();来取得view加到viewpager里,这样一启动,五个子界面都同时启动,都去加载数据,会导致很卡,也浪费了资源,我们想法是,默认只加载第一个页面,滑到第二个才开始加载第二个的数据,但是通过监听事件发现,一开始启动,五个Activity的oncreate方法都运行了。再滑动切换,是没有任何监听或者实现方法得到调用的。

校园学工信息系统 源码,ubuntu更新时死机,网络爬虫哪些书,php date’,小型团队seolzw

西部主机源码,vscode 修改编码,ubuntu进bios,怎么切换tomcat,sqlite 是前端数据库,竞争对手用爬虫技术抢客户,php接入支付宝,seo优化培训学院广告,酷睿彩网站系统破解版,求一个公司oa系统模板lzw

这里后来想到了另外一个方法:我们用viewpager+5个Fragment+广播机制去通知他更新。

一文鸡富贵鸡源码,vscode asp高亮,手动分区ubuntu,tomcat 多个证书,sqlite更新视图,轻云服务器标准版,java jquery表格插件下载地址,前端框架教程网学习,爬虫调用接口,php专业培训机构,搜索引擎seo优化外包,旅游网站设计模板asp,网页背景图片代码,超级网站模板下载,前端静态页面实例,网站管理系统asp,小程序 平台 源码lzw

在主界面我们可以这样写。

/** * 初始化PageViewer */List list;FragmentPagerAdapter myPagerAdapter;FragmentManager SupportfragmentManager = getSupportFragmentManager();private void initPagerViewer(){Label1AllOrder lable1 = new Label1AllOrder();Label2WinPrizeOrder lable2 = new Label2WinPrizeOrder();Label3WaitForLotteryOrder lable3 = new Label3WaitForLotteryOrder();Label4ZhuiHaoOrder lable4 = new Label4ZhuiHaoOrder();Label5BuyTogetherOrder lable5 = new Label5BuyTogetherOrder();list = new ArrayList(); list.add(lable1);list.add(lable2);list.add(lable3);list.add(lable4);list.add(lable5);myPagerAdapter = new MyPagerAdapter(SupportfragmentManager); view_pager.setAdapter(myPagerAdapter); view_pager.setOnPageChangeListener(new MyOnPageChangeListener()); }/** * Pager适配器 */public class MyPagerAdapter extends FragmentPagerAdapter {public MyPagerAdapter(FragmentManager fm) {super(fm);}@Overridepublic Fragment getItem(int arg0) {return list.get(arg0); }@Overridepublic int getCount() {return list.size();}/*@Overridepublic Object instantiateItem(View arg0, int arg1) {//ViewPager pViewPager = ((ViewPager) arg0);//pViewPager.addView(list.get(arg1).getView());return list.get(arg1);}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {//ViewPager pViewPager = ((ViewPager) container);//pViewPager.removeView(list.get(position).getView());}*/}private void sendBroadcastDoRefreshByCurrentIndex(){switch (currentIndex) {case 0:sendBroadcastDoRefresh("action.Label1AllOrder");break;case 1:sendBroadcastDoRefresh("action.Label2WinPrizeOrder");break;case 2:sendBroadcastDoRefresh("action.Label3WaitForLotteryOrder");break;case 3:sendBroadcastDoRefresh("action.Label4ZhuiHaoOrder");break;case 4:sendBroadcastDoRefresh("action.Label5BuyTogetherOrder");break;default:break;}}Intent broadCastIntent = new Intent();// 广播通知private void sendBroadcastDoRefresh(String action){broadCastIntent.setAction(action); sendBroadcast(broadCastIntent);}/** * 页卡切换监听 */private int currentIndex = 0;public class MyOnPageChangeListener implements OnPageChangeListener {@Overridepublic void onPageSelected(int index) {currentIndex = index;System.out.println("-onPageSelected--------" + index);initViewPagePoint(index);switch (index) {case 0:sendBroadcastDoRefresh("action.Label1AllOrder");view_pager_tip.setText("全部订单");break;case 1:sendBroadcastDoRefresh("action.Label2WinPrizeOrder");view_pager_tip.setText("中奖订单");break;case 2:sendBroadcastDoRefresh("action.Label3WaitForLotteryOrder");view_pager_tip.setText("待开奖订单");break;case 3:sendBroadcastDoRefresh("action.Label4ZhuiHaoOrder");view_pager_tip.setText("追号订单");break;case 4:sendBroadcastDoRefresh("action.Label5BuyTogetherOrder");view_pager_tip.setText("合买订单");break;default:break;}}@Overridepublic void onPageScrollStateChanged(int arg0) { }@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}}

每滑动一下,就发送广播,通知子界面去更新。但是是不是每次更新就有他自己控制了

在五个子Fragment我们可以这样写:其实这里五个是相似了。我就贴一个的代码

public class Label2WinPrizeOrder extends Fragment implements OnClickListener {Activity activity = Label2WinPrizeOrder.this.getActivity(); @Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);LayoutInflater inflater = getActivity().getLayoutInflater();mainView = inflater.inflate(R.layout.my_lottery_user_center_label2_win_prize, (ViewGroup)getActivity().findViewById(R.id.my_lottery_user_center_viewpage), false);initUI(); initNoDataUI();//注册刷新广播IntentFilter intentFilter = new IntentFilter();intentFilter.addAction("action.Label2WinPrizeOrder");getActivity().registerReceiver(mRefreshBroadcastReceiver, intentFilter); }@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ViewGroup p = (ViewGroup) mainView.getParent();if(p!=null){p.removeAllViewsInLayout();}return mainView;}@Overridepublic void onActivityCreated(Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState);} // broadcast receiverprivate BroadcastReceiver mRefreshBroadcastReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();if (action.equals("action.Label2WinPrizeOrder")) {System.out.println("---------------action.Label2WinPrizeOrder"); if (AutoUpdate.isNetworkAvailable(activity)) {if(canLoadAgain){loadingRelativelayout.setVisibility(View.VISIBLE);noDataLinearlayout.setVisibility(View.GONE);hasDataLinearlayout.setVisibility(View.GONE);updateInitLotteryInfo();page = 0;mListView.mEndRootView.setVisibility(View.GONE);mListView.setAutoLoadMore(true);mListView.setCanRefresh(true);new getDataTask().execute(1);}}setK3ballVisible();}}};//初设化彩种信息private void updateInitLotteryInfo(){if(MyLotterActivity.labelsListData != null && MyLotterActivity.labelsListData.size() >= 2){MyLotteryLabelBean bean = MyLotterActivity.labelsListData.get(1);if(FunctionUtil.strNotNull(bean.getLottery_type_index())){if("308".equals(bean.getLottery_type_index())){lottery_type_index = 308;}else if("309".equals(bean.getLottery_type_index())){lottery_type_index = 309;}else if("310".equals(bean.getLottery_type_index())){lottery_type_index = 310;}}if(FunctionUtil.strNotNull(bean.getTitle())){title = bean.getTitle();}tipTextview.setText(title);}}private void initUI() {activity = getActivity();loadingRelativelayout = (LinearLayout) mainView.findViewById(R.id.my_lottery_user_center_label2_loading_rel);loadAgainRelativelayout = (RelativeLayout) mainView.findViewById(R.id.my_lottery_user_center_label2_load_again_rel);hasDataLinearlayout = (LinearLayout) mainView.findViewById(R.id.my_lottery_user_center_label2_has_data_linear);noDataLinearlayout = (LinearLayout) mainView.findViewById(R.id.my_lottery_user_center_label2_no_data_linear);

}

这样。我们每次滑动一次就能在五个子类,得到一次广播通知。就让他去加载数据,当第二次在滑动到那个,他依然可以收到广播,至于要不要再去刷新数据,就看你怎么控制了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。