fragment

来源:互联网 发布:人生有涯而知无涯 编辑:程序博客网 时间:2024/06/06 19:22
ChildFragment:::::::
package com.bwie.zhoukao2demo.fragment;import android.content.Context;import android.os.AsyncTask;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import com.bwie.zhoukao2demo.NetWordUtils;import com.bwie.zhoukao2demo.Product;import com.bwie.zhoukao2demo.R;import com.google.gson.Gson;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshListView;import com.youth.banner.Banner;import com.youth.banner.loader.ImageLoader;import java.util.ArrayList;import java.util.Arrays;import java.util.List;/** * author:Created by WangZhiQiang on 2017-10-19. * pullToRefresh 联网 ,解析, 上下拉 */public class ChildFragment extends Fragment {    int page = 1;//请求接口的第几页;    String baseUrl = "http://gank.io/api/data/Android/10/";    private PullToRefreshListView plv;    //定义一个总的集合, 以后上拉加载的时候,往这个集合里追加数据,更新适配器;    List<Product.ResultsBean> list = new ArrayList<>();    private MAdapter mAdapter;    private ListView lv;    private Banner banner;    String[] imagUrls = {"http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg",            "http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg",            "http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg",            "http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg",            "http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg"};    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.fragment_b, null);        //这个view是头部        View header_banner = inflater.inflate(R.layout.header_banner, null);        banner = (Banner) header_banner.findViewById(R.id.banner);        plv = (PullToRefreshListView) view.findViewById(R.id.plv);        //得到plv封装的listview,方便我们添加头部        lv = plv.getRefreshableView();        lv.addHeaderView(header_banner);        return view;    }    @Override    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {        super.onViewCreated(view, savedInstanceState);        getNetData(page);//获取list集合的方法;        getNetBannerData();        mAdapter = new MAdapter();//主线程继续往下走,和刚才开启的线程互不影响;0.0001        lv.setAdapter(mAdapter);        plv.setMode(PullToRefreshBase.Mode.BOTH);//上下拉都支持        plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {            @Override            public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {                list.clear();                new MAsync().execute(baseUrl + 1);            }            @Override            public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {                page++;                getNetData(page);            }        });    }    private void getNetData(int page) {        new MAsync().execute(baseUrl + page);    }    private class MAdapter extends BaseAdapter {        @Override        public int getCount() {            return list.size();        }        @Override        public Object getItem(int i) {            return list.get(i);        }        @Override        public long getItemId(int i) {            return i;        }        /**         * 多条目         *         * @param i         * @param view         * @param viewGroup         * @return         */        @Override        public View getView(int i, View view, ViewGroup viewGroup) {            view = View.inflate(getActivity(), R.layout.item01, null);            return view;        }    }    class MAsync extends AsyncTask<String, Void, String> {        @Override        protected String doInBackground(String... strings) {            return NetWordUtils.getNetjson(strings[0]);        }        @Override        protected void onPostExecute(String s) {            super.onPostExecute(s);            Gson gson = new Gson();            Product product = gson.fromJson(s, Product.class);            List<Product.ResultsBean> results = product.getResults();            list.addAll(results);            mAdapter.notifyDataSetChanged();            plv.onRefreshComplete();        }    }    private void getNetBannerData() {        banner.setImages(Arrays.asList(imagUrls));//设置图片集合        banner.setImageLoader(new BannerLoader());        banner.start();    }    /**     * 加载轮播图的类;--Banner的     */    class BannerLoader extends ImageLoader {        //要实现具体如哪个功能或框架来加载图片        @Override        public void displayImage(Context context, Object path, ImageView imageView) {            com.nostra13.universalimageloader.core.ImageLoader instance = com.nostra13.universalimageloader.core.ImageLoader.getInstance();            instance.displayImage((String) path, imageView);        }    }}
MainFragment:::::::
package com.bwie.zhoukao2demo.fragment;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.bwie.zhoukao2demo.R;import java.util.ArrayList;/** * author:Created by WangZhiQiang on 2017-10-19. * 1--Tablayout * *viewpager里三个子fragment(一个里面有数据) */public class MainFragment extends Fragment {    private TabLayout tabLayout;    private ViewPager viewpager;    ArrayList fragmentList = new ArrayList<Fragment>();    String[] temp = {"你的 ","我的","他的"};    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.fragment_a, null);        tabLayout = (TabLayout) view.findViewById(R.id.tl_titles);        viewpager = (ViewPager) view.findViewById(R.id.viewpager);        return view;    }    @Override    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {        super.onViewCreated(view, savedInstanceState);        // fragment中嵌套fragment, Manager需要用(getChildFragmentManager())        MPagerAdapter mPagerAdapter = new MPagerAdapter(getChildFragmentManager());        initFragment();        tabLayout.setTabMode(TabLayout.MODE_FIXED);        tabLayout.setupWithViewPager(viewpager);        viewpager.setAdapter(mPagerAdapter);    }    private void initFragment() {        for (int i = 0; i < 3; i++) {            fragmentList.add(new ChildFragment());        }    }    class MPagerAdapter extends FragmentPagerAdapter {        public MPagerAdapter(FragmentManager fm) {            super(fm);        }        @Override        public Fragment getItem(int position) {            return (Fragment) fragmentList.get(position);        }        @Override        public int getCount() {            return fragmentList.size();        }        @Override        public Object instantiateItem(ViewGroup container, int position) {            return super.instantiateItem(container, position);        }        //返回tablayout的标题文字;        @Override        public CharSequence getPageTitle(int position) {            return temp[position];        }    }}

Product::::::
package com.bwie.zhoukao2demo;import java.util.List;/** * author:Created by WangZhiQiang on 2017-10-20. */public class Product {    /**     * error : false     * results : [{"_id":"59de2f22421aa90fe50c015c","createdAt":"2017-10-11T22:48:02.721Z","desc":"用 Kotlin 实现的基于物理的动画","images":["http://img.gank.io/58925abb-3e11-4d6e-9e44-a4567c03d03f"],"publishedAt":"2017-10-17T13:10:43.731Z","source":"web","type":"Android","url":"https://github.com/sagar-viradiya/AndroidPhysicsAnimation","used":true,"who":" Thunder Bouble"},{"_id":"59e46c6a421aa90fe50c0174","createdAt":"2017-10-16T16:23:06.637Z","desc":"Android 通用圆角布局,快速实现圆角需求。","images":["http://img.gank.io/4d9b99ba-cc97-4ef8-b834-477ad8a97100"],"publishedAt":"2017-10-17T13:10:43.731Z","source":"web","type":"Android","url":"https://github.com/GcsSloop/rclayout","used":true,"who":"sloop"},{"_id":"59e46c89421aa90fe7253598","createdAt":"2017-10-16T16:23:37.313Z","desc":"Android 加密工具包。","publishedAt":"2017-10-17T13:10:43.731Z","source":"web","type":"Android","url":"https://github.com/GcsSloop/encrypt","used":true,"who":"sloop"},{"_id":"59e55ecd421aa90fe725359c","createdAt":"2017-10-17T09:37:17.526Z","desc":"一个用 Kotlin 写的轻量级 URL 路由器框架","publishedAt":"2017-10-17T13:10:43.731Z","source":"web","type":"Android","url":"https://github.com/twocity/linker","used":true,"who":"ZhangTitanjum"},{"_id":"59e5740f421aa90fe725359f","createdAt":"2017-10-17T11:07:59.933Z","desc":"Android面试指南:我们需要怎样的工程师,我们需要成为怎样的工程师?","publishedAt":"2017-10-17T13:10:43.731Z","source":"web","type":"Android","url":"https://mp.weixin.qq.com/s?__biz=MzU4MjAzNTAwMA==&mid=2247483781&idx=2&sn=c5ef46cea309df058d2b168fada6dec0&chksm=fdbf32d2cac8bbc4b7f373c76bfc4d2447717634fdbc5afae565cca92551bfd152b329d5e103#rd","used":true,"who":null},{"_id":"59df3eac421aa90fef20347c","createdAt":"2017-10-12T18:06:36.692Z","desc":"文章中详实说明利用Cmake构造Ndk库需要注意的问题,以及部分Cmake命令的解读。","publishedAt":"2017-10-16T12:19:20.311Z","source":"web","type":"Android","url":"http://blog.csdn.net/qq_34902522/article/details/78144127","used":true,"who":null},{"_id":"59e1b47b421aa90fef203481","createdAt":"2017-10-14T14:53:47.998Z","desc":"详细介绍java垃圾回收的过程及相关算法","publishedAt":"2017-10-16T12:19:20.311Z","source":"chrome","type":"Android","url":"https://mp.weixin.qq.com/s?__biz=MzIwODI3MTc2Ng==&mid=2649647405&idx=1&sn=46a48cedd1540a994cd316ca164e005a&chksm=8f1f69d4b868e0c25245676ac55dc8d1fcad3dfa4bc63a2e0835b0a1155f1d2320a45a7c7078#rd","used":true,"who":"技术特工队"},{"_id":"59e4092c421aa90fe50c016d","createdAt":"2017-10-16T09:19:40.793Z","desc":"几条小经验帮你美化你的GitHub开源项目","publishedAt":"2017-10-16T12:19:20.311Z","source":"web","type":"Android","url":"https://mp.weixin.qq.com/s?__biz=MzIwMzYwMTk1NA==&mid=2247487344&idx=1&sn=744a9ebc0425fb3fa17c3f62eb59e421","used":true,"who":"陈宇明"},{"_id":"59dc7149421aa94e07d18490","createdAt":"2017-10-10T15:05:45.902Z","desc":"使用 Kotlin 实现的一个 Dribbble 客户端","images":["http://img.gank.io/05d6552f-97ba-4d52-ad33-3caeba5cb327","http://img.gank.io/84594f1b-d10e-42a3-afc1-c7d2bf9ac0cf"],"publishedAt":"2017-10-11T12:40:42.545Z","source":"web","type":"Android","url":"https://github.com/armcha/Ribble","used":true,"who":" Thunder Bouble"},{"_id":"59dcca81421aa94e0053bddf","createdAt":"2017-10-10T21:26:25.797Z","desc":"最近在给某某银行做项目的时,涉及到了数据埋点,性能监控等问题,那我们起先想到的有两种方案,方案之一就是借助第三方,比如友盟、Bugly等,由于项目是部署在银行的网络框架之内的,所以该方案不可行。","publishedAt":"2017-10-11T12:40:42.545Z","source":"web","type":"Android","url":"https://mp.weixin.qq.com/s?__biz=MzIyMjQ0MTU0NA==&mid=2247484445&idx=1&sn=8eef04a7932b58ef0012643db228fb32&chksm=e82c3d3adf5bb42c88333160a88c7b05fb5f45798434afa956fe1f1a58c7713ef121c7ea0af4&scene=0&key=7460e137ddd94f92f668e812cfc0aef8fde2bdf7943c7409875cce12a3baed3526f31e4a707ed86896ee8ddbbf761bb2f09b2d7406c3b9016589495240d835d967a2141231c43d084635a7df11647fb0&ascene=0&uin=MjMzMzgwOTEwMQ%3D%3D&devicetype=iMac+MacBookPro12%2C1+OSX+OSX+10.10.5+build(14F27)&version=11020201&pass_ticket=54ym37fDoXgDZm7nzjGt6KNDR9%2F9ZIU8%2Bo5kNcGEXqi8GKijls6et5TXcXxbERi%2F","used":true,"who":"Tamic (码小白)"}]     */    private boolean error;    private List<ResultsBean> results;    public boolean isError() {        return error;    }    public void setError(boolean error) {        this.error = error;    }    public List<ResultsBean> getResults() {        return results;    }    public void setResults(List<ResultsBean> results) {        this.results = results;    }    public static class ResultsBean {        /**         * _id : 59de2f22421aa90fe50c015c         * createdAt : 2017-10-11T22:48:02.721Z         * desc : 用 Kotlin 实现的基于物理的动画         * images : ["http://img.gank.io/58925abb-3e11-4d6e-9e44-a4567c03d03f"]         * publishedAt : 2017-10-17T13:10:43.731Z         * source : web         * type : Android         * url : https://github.com/sagar-viradiya/AndroidPhysicsAnimation         * used : true         * who :  Thunder Bouble         */        private String _id;        private String createdAt;        private String desc;        private String publishedAt;        private String source;        private String type;        private String url;        private boolean used;        private String who;        private List<String> images;        public String get_id() {            return _id;        }        public void set_id(String _id) {            this._id = _id;        }        public String getCreatedAt() {            return createdAt;        }        public void setCreatedAt(String createdAt) {            this.createdAt = createdAt;        }        public String getDesc() {            return desc;        }        public void setDesc(String desc) {            this.desc = desc;        }        public String getPublishedAt() {            return publishedAt;        }        public void setPublishedAt(String publishedAt) {            this.publishedAt = publishedAt;        }        public String getSource() {            return source;        }        public void setSource(String source) {            this.source = source;        }        public String getType() {            return type;        }        public void setType(String type) {            this.type = type;        }        public String getUrl() {            return url;        }        public void setUrl(String url) {            this.url = url;        }        public boolean isUsed() {            return used;        }        public void setUsed(boolean used) {            this.used = used;        }        public String getWho() {            return who;        }        public void setWho(String who) {            this.who = who;        }        public List<String> getImages() {            return images;        }        public void setImages(List<String> images) {            this.images = images;        }    }}

原创粉丝点击