<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.design.widget.TabLayout android:id="@+id/tab" android:layout_width="match_parent" android:layout_height="wrap_content"> </android.support.design.widget.TabLayout> <android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> </android.support.v4.view.ViewPager></LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v4.view.ViewPager android:id="@+id/pull_vp" android:layout_width="match_parent" android:layout_height="100dp"></android.support.v4.view.ViewPager> <com.handmark.pulltorefresh.library.PullToRefreshListView android:id="@+id/pull1" android:layout_width="match_parent" android:layout_height="match_parent"> </com.handmark.pulltorefresh.library.PullToRefreshListView> </LinearLayout><?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <ImageView android:id="@+id/item_img" android:layout_width="100dp" android:layout_height="100dp" android:layout_marginLeft="20dp"/> <TextView android:id="@+id/item_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginTop="15dp"/> </LinearLayout>public class F1 extends Fragment { //首页面使用tabLayout+viewPager实现。其它导航页面,内容自定义。 private TabLayout f1_tab; private ViewPager f1_vp; private List<Fragment> fal; private List<String> list = new ArrayList<String>(); @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.f1, container, false); f1_tab = view.findViewById(R.id.tab); f1_vp = view.findViewById(R.id.vp); return view; } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); initData(); MyFragPageAdapter adapter = new MyFragPageAdapter(getChildFragmentManager()); f1_vp.setAdapter(adapter); // setupWithViewPager必须在ViewPager.setAdapter()之后调用 // 具体原因查看源码 f1_tab.setupWithViewPager(f1_vp); } private void initData() { fal = new ArrayList<>(); F01 f01 = new F01(); F01 f02 = new F01(); F01 f03 = new F01(); F01 f04 = new F01(); F01 f05 = new F01(); F01 f06 = new F01(); fal.add(f01); fal.add(f02); fal.add(f03); fal.add(f04); fal.add(f05); fal.add(f06); } class MyFragPageAdapter extends FragmentPagerAdapter { private int pages = 6; private Context context; private String[] datas = {"花边", "热点", "广告", "热门","推荐","其他"}; //构造必须一个FragmentManager管理器,注意也是v4里的 public MyFragPageAdapter(FragmentManager fm) { super(fm); this.context = context; } @Override public int getCount() { return pages; } @Override public Fragment getItem(int position) { return fal.get(position); } @Override public CharSequence getPageTitle(int position) { return datas[position]; } } }public class F01 extends Fragment { List<JavaBean.DataBean> mylist = new ArrayList<>(); private ViewPager f01_vp; private PullToRefreshListView f01_pull; int currentItem; //当前页 //int lastPosition = 0; //记录上次点的位置 //存放图片的集合 String [] imgs = { "http://pic8.nipic.com/20100701/5290458_114840036316_2.jpg", "http://pic2.nipic.com/20090424/1468853_230119053_2.jpg", "http://img3.3lian.com/2013/s1/20/d/57.jpg", "http://pic39.nipic.com/20140226/18071023_164300608000_2.jpg", "http://a0.att.hudong.com/15/08/300218769736132194086202411_950.jpg" }; private List<ImageView> imagesList; private ScheduledExecutorService scheduledExecutorService; private PullToRefreshListView f02_pull; String baseUrl = "http://www.93.gov.cn/93app/data.do?channelId=0&startNum="; //private ArrayAdapter<String> arrayAdapter; private int page = 0; private com.nostra13.universalimageloader.core.ImageLoader imageLoaderInstance; private ListView lv; //利用handler + 线程 实现无限轮播 Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); //设置当前页面 f01_vp.setCurrentItem(currentItem); } }; private MyItemAdapter myadapter; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.f01, container, false); f01_pull = view.findViewById(R.id.pull1); f01_vp = view.findViewById(R.id.pull_vp); return view; } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); //页面中最上方实现viewPager的无限自动轮播 initData(); MyAdapter adapter = new MyAdapter(); f01_vp.setAdapter(adapter); f01_vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { //当VP滑动 设置当前页 currentItem = position; } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } }); ListView lv = f01_pull.getRefreshableView(); imageLoaderInstance = com.nostra13.universalimageloader.core.ImageLoader.getInstance(); // arrayAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, list); myadapter = new MyItemAdapter(); lv.setAdapter(myadapter); f01_pull.setMode(PullToRefreshBase.Mode.PULL_FROM_START); f01_pull.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) { mylist.clear(); getNetData(0); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) { getNetData(page++); } }); getNetData(0);//请求listview接口数据 } private void getNetData(int page) { new MAsyncTask().execute(baseUrl +page); } private void initData() { imagesList = new ArrayList<>(); for (int i = 0; i<imgs.length; i++){ ImageView imageView = new ImageView(getActivity()); imageView.setMaxWidth(100); //调用显示图片 ImageLoader instance = ImageLoader.getInstance(); instance.displayImage(imgs[i], imageView, ImageLoaderUtils_circle.getDisplayImageOption()); imagesList.add(imageView); } } class MyItemAdapter extends BaseAdapter{ @Override public int getCount() { Log.e("wzq", "getCount:" + mylist.size()); return mylist.size(); } @Override public Object getItem(int i) { return mylist.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { View view1 = View.inflate(getActivity(), R.layout.item1, null); TextView tv = view1.findViewById(R.id.item_tv); ImageView img = view1.findViewById(R.id.item_img); tv.setText(mylist.get(i).getSUBTITLE()); // iv.setImageBitmap("url"); //调用显示图片 ImageLoader instance = ImageLoader.getInstance(); instance.displayImage(mylist.get(i).getIMAGEURL(),img); return view1; } } private class MyAdapter extends PagerAdapter { @Override public int getCount() { return imagesList.size(); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override public void destroyItem(ViewGroup view, int position, Object object) { view.removeView(imagesList.get(position)); } @Override public Object instantiateItem(ViewGroup view, int position) { view.addView(imagesList.get(position)); return imagesList.get(position); } } @Override public void onStart() { super.onStart(); //利用线程池执行动画轮播 scheduledExecutorService = Executors.newSingleThreadScheduledExecutor(); scheduledExecutorService.scheduleWithFixedDelay( new ViewPageTask(), 2, 2, TimeUnit.SECONDS); } //图片轮播任务 private class ViewPageTask implements Runnable { @Override public void run() { //获取当前页面 currentItem = (currentItem +1)% imgs.length; handler.sendEmptyMessage(0); } } @Override public void onStop() { super.onStop(); if(scheduledExecutorService != null){ scheduledExecutorService.shutdown(); scheduledExecutorService = null; } } class MAsyncTask extends AsyncTask<String ,Void, String>{ @Override protected String doInBackground(String... strings) { return NetUtils.getNetJson(strings[0]); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); JavaBean product = gson.fromJson(s, JavaBean.class); List<JavaBean.DataBean> datas = product.getData(); mylist.addAll(datas); myadapter.notifyDataSetChanged(); f01_pull.onRefreshComplete(); } } }
跑偏了的三周考—— tabLayout + viewPger + pullToRefresh
最新推荐文章于 2019-07-30 15:15:44 发布