banner实现无限轮播+下拉刷新上拉加载+ 下拉时 listview 和轮播图一起刷新

来源:互联网 发布:淘宝首页设计怎么设计 编辑:程序博客网 时间:2024/05/21 06:12


//首先把所需要的依赖包导入  gson jar包、imageLoader jar包、banner1.4.9jar包、design jar包,,,然后导入library,新建项目,把library导入项目中

//添加权限

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
android:name=".MyApplication"
微笑微笑微笑drawable包下 rb_selector布局

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:state_checked="true" android:drawable="@android:color/holo_red_dark"></item>    <item android:drawable="@android:color/holo_blue_dark"></item></selector>
微笑微笑微笑layout包下 activity_main布局

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.samsung.sunfuliang10241.MainActivity">    <RadioGroup        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal"        android:id="@+id/rel_navigate"        android:layout_alignParentBottom="true">        <RadioButton            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="首页"            android:button="@null"            android:gravity="center"            android:id="@+id/rb_index"            android:padding="3dp"            android:background="@drawable/rb_selector"            android:checked="true"/>        <RadioButton            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="发现"            android:button="@null"            android:padding="3dp"            android:gravity="center"            android:id="@+id/rb_discovery"            android:background="@drawable/rb_selector"/>        <RadioButton            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="下载"            android:button="@null"            android:gravity="center"            android:padding="3dp"            android:id="@+id/rb_down"            android:background="@drawable/rb_selector"/>        <RadioButton            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="我的"            android:padding="3dp"            android:button="@null"            android:gravity="center"            android:id="@+id/rb_me"            android:background="@drawable/rb_selector"/>    </RadioGroup>    <FrameLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_above="@id/rel_navigate"        android:id="@+id/main_content"></FrameLayout></RelativeLayout>
微笑微笑微笑layout包下 discover_layout布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:layout_width="match_parent"    android:layout_height="match_parent"    android:gravity="center">    <TextView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/tv"        android:text="这是发现页面"        android:textColor="#f00"        /></LinearLayout>
微笑微笑微笑layout包下 down_layout布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:layout_width="match_parent"    android:layout_height="match_parent"    android:gravity="center"    >    <TextView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/tv"        android:text="这是下载页面"        android:textColor="#f00"        /></LinearLayout>
微笑微笑微笑layout包下 index_layout布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:gravity="center">    <android.support.design.widget.TabLayout        android:layout_width="match_parent"        android:layout_height="40dp"        app:tabGravity="center"        app:tabIndicatorColor="@color/colorAccent"        app:tabMode="scrollable"        app:tabSelectedTextColor="@color/colorPrimaryDark"        app:tabTextColor="@color/colorPrimary"        android:id="@+id/myTab"        ></android.support.design.widget.TabLayout>    <android.support.v4.view.ViewPager        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/vp"        ></android.support.v4.view.ViewPager></LinearLayout>
微笑微笑微笑layout包下 item布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="horizontal" android:layout_width="match_parent"    android:layout_height="match_parent">    <ImageView        android:layout_width="60dp"        android:layout_height="60dp"        android:id="@+id/img"/>    <TextView        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/tv_title"/></LinearLayout>
微笑微笑微笑layout包下 me_layout布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:layout_width="match_parent"    android:layout_height="match_parent"    android:gravity="center"    >    <TextView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/tv"        android:text="这是我页面"        android:textColor="#f00"        /></LinearLayout>
微笑微笑微笑layout包下 recommend_layout布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:ptr="http://schemas.android.com/apk/res-auto"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <com.handmark.pulltorefresh.library.PullToRefreshScrollView        android:id="@+id/refresh_scroll_view"        android:layout_width="match_parent"        android:layout_height="match_parent"        ptr:ptrAnimationStyle="flip"        ptr:ptrDrawable="@drawable/default_ptr_flip"        ptr:ptrHeaderBackground="#383838"        ptr:ptrHeaderTextColor="#FFFFFF">        <LinearLayout            android:layout_width="match_parent"            android:layout_height="match_parent"            android:orientation="vertical">            <com.youth.banner.Banner                android:id="@+id/myBanner"                android:layout_width="match_parent"                android:layout_height="200dp"></com.youth.banner.Banner>           <views.MyListView               android:layout_width="match_parent"               android:layout_height="match_parent"               android:id="@+id/lv"></views.MyListView>        </LinearLayout>    </com.handmark.pulltorefresh.library.PullToRefreshScrollView></LinearLayout>
微笑微笑微笑layout包下 test 布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:layout_width="match_parent"    android:layout_height="match_parent">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="vertical">        <com.youth.banner.Banner            android:layout_width="match_parent"            android:layout_height="200dp"            android:id="@+id/myBanner"></com.youth.banner.Banner>        <ListView            android:layout_width="match_parent"            android:layout_height="match_parent"            android:id="@+id/lv"></ListView>    </LinearLayout></LinearLayout>
微笑微笑微笑主包下MainActivity 类

public class MainActivity extends AppCompatActivity {    private RadioGroup radioGroup;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        radioGroup = (RadioGroup) findViewById(R.id.rel_navigate);        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(RadioGroup group, int checkedId) {                if(checkedId==R.id.rb_index){                    addFragment(new IndexFragment());                }else if(checkedId==R.id.rb_discovery){                    addFragment(new DiscoveryFragment());                }else if(checkedId==R.id.rb_down){                    addFragment(new DownFragment());                }else if(checkedId==R.id.rb_me){                    addFragment(new MeFragment());                }            }        });        //默认添加"首页"        addFragment(new IndexFragment());    }    /**     * 添加fragment到主页面中     * @param fragment     */    public  void addFragment(Fragment fragment){        getSupportFragmentManager().beginTransaction().replace(R.id.main_content,fragment).commit();    }}
微笑微笑微笑主包下 MyApplication 类

public class MyApplication extends Application {    @Override    public void onCreate() {        super.onCreate();        //初使化        ImageloaderUtil.initConfig(this);    }}
微笑微笑微笑adapter包下 MyAdapter 类

public class MyAdapter extends BaseAdapter {    private List<Result.DataEntity> datas;    private Context context;    public MyAdapter(List<Result.DataEntity> datas, Context context) {        this.datas = datas;        this.context = context;    }    @Override    public int getCount() {        return datas.size();    }    @Override    public Object getItem(int position) {        return datas.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {       ViewHolder holder ;        if(convertView==null){            convertView=View.inflate(context, R.layout.item,null);            holder=new ViewHolder();            holder.tvTitle= convertView.findViewById(R.id.tv_title);            holder.img=convertView.findViewById(R.id.img);            convertView.setTag(holder);        }else{            holder=(ViewHolder) convertView.getTag();        }        holder.tvTitle.setText(datas.get(position).getTITLE());        if(datas.get(position).getIMAGEURL()==null || datas.get(position).getIMAGEURL().equals("")){            holder.img.setImageResource(R.mipmap.ic_launcher);        }else{            //imageLoader加载图片            ImageLoader.getInstance().displayImage(datas.get(position).getIMAGEURL(),holder.img, ImageloaderUtil.getImageOptions());        }        return convertView;    }    class ViewHolder{        TextView tvTitle;        ImageView img;    }}
微笑微笑微笑adapter包下 MyPagerAdapter 类
public class MyPagerAdapter extends FragmentPagerAdapter {    //标题    private List<String> titles;    public MyPagerAdapter(FragmentManager fm, List<String> titles) {        super(fm);        this.titles = titles;    }    //返回标题    @Override    public CharSequence getPageTitle(int position) {        return titles.get(position);    }    @Override    public Fragment getItem(int position) {        //暂时返回推荐页面        return new RecommendFragment();    }    @Override    public int getCount() {        return titles.size();    }}
微笑微笑微笑Bean包下 Result 类
public class Result {    /**     * result : success     * dataScroll : [{"FROMNAME":"九三学社中央宣传部","SUBTITLE":null,"SHOWTIME":"2017-10-15","ID":"30310406","IMAGEURL":"/11002/upload/webcms/content/image/2017/10/15/14_56_29_117_12420_01.jpg","RN":1,"TITLE":"九三学社中央科学座谈会聚焦文物考古与丝绸之路"},{"FROMNAME":"九三学社湖北省委","SUBTITLE":null,"SHOWTIME":"2017-10-09","ID":"30f6c95527b447528511d105333fbf56","IMAGEURL":"/11002/upload/webcms/content/image/2017/10/09/14_11_02_821_12967_01.jpg","RN":2,"TITLE":"邵鸿率队赴十堰调研"},{"FROMNAME":"九三学社宁夏区委","SUBTITLE":null,"SHOWTIME":"2017-09-27","ID":"30081029","IMAGEURL":"/11002/upload/webcms/content/image/2017/09/27/08_57_48_840_53302_01.jpg","RN":3,"TITLE":"九三学社宁夏区委文化传承报告会在银召开 丛斌做报告"},{"FROMNAME":"团结报","SUBTITLE":"\u2014\u2014记九三学社中央助力\u201c海科会\u201d举办","SHOWTIME":"2017-09-26","ID":"29753347","IMAGEURL":"/11002/upload/webcms/content/image/2017/09/20/09_11_17_163_37240_01111.jpg","RN":4,"TITLE":"主打\u201c科技牌\u201d 彰显\u201c科技范儿\u201d"},{"FROMNAME":"九三学社自贡市委","SUBTITLE":null,"SHOWTIME":"2017-09-21","ID":"6d356ad135454b9db3c2b333dea8c381","IMAGEURL":"/11002/upload/webcms/content/image/2017/09/21/11_12_58_489_41459_20170914093742676.jpg","RN":5,"TITLE":"韩启德:始终保持绿色发展定力 谱写\u201c中国梦\u201d自贡篇章"}]     * data : [{"FROMNAME":"九三学社中央宣传部","SUBTITLE":"Get the Flash Player to see this player.","SHOWTIME":"2017-10-19","ID":"30310476","IMAGEURL":null,"RN":1,"TITLE":"九三学社中央致信祝贺中共十九大胜利召开"},{"FROMNAME":"九三学社中央宣传部","SUBTITLE":"1018日,举世瞩目的中国共产党第十九次全国代表大会在北京隆重开幕。 九三学社","SHOWTIME":"2017-10-18","ID":"30310443","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2017/10/18/20_41_29_761_28057_hanqide.jpg","RN":2,"TITLE":"九三学社中央领导列席中共十九大开幕会"},{"FROMNAME":"九三学社中央宣传部","SUBTITLE":"中共十九大隆重开幕了。这是在全面建成小康社会关键阶段、中国特色社会主义进入新时代","SHOWTIME":"2017-10-19","ID":"30310450","IMAGEURL":null,"RN":3,"TITLE":"韩启德:学习中共十九大精神 建设新时代中国特色社会主义参政党"},{"FROMNAME":"新华网","SUBTITLE":"新华社合肥1023日电(记者 徐海涛)记者从中国科学技术大学获悉,九三学社中央","SHOWTIME":"2017-10-24","ID":"30441488","IMAGEURL":null,"RN":4,"TITLE":"我国科学家在一维量子液体研究领域获重要进展"},{"FROMNAME":"九三学社上海市委","SUBTITLE":"1023日上午,九三学社中央副主席、上海市政协副主席、九三学社上海市委主委赵雯","SHOWTIME":"2017-10-23","ID":"30441487","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2017/10/23/16_38_56_567_80995_11.jpg","RN":5,"TITLE":"赵雯与九三学社上海城乡建设和交通委员会社员共同学习中共十九大报告精神"},{"FROMNAME":"九三学社广西区委","SUBTITLE":"习近平总书记代表中共第十八届中央委员会作的报告大气磅礴、内涵丰富,3万多字的报告","SHOWTIME":"2017-10-23","ID":"30441486","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2017/10/23/16_32_59_560_14078_lb.jpg","RN":6,"TITLE":"李彬:不忘初心共赴新征程 牢记使命迈向新时代"},{"FROMNAME":"九三学社河北省委","SUBTITLE":"金秋十月,中国共产党第十九次全国代表大会在北京胜利开幕,中华民族伟大复兴征程揭开","SHOWTIME":"2017-10-23","ID":"30441485","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2017/10/23/16_30_11_829_23882_bba1cd11728b471040bb0064c5cec3fdfd032386.jpg","RN":7,"TITLE":"葛会波:坚定政治信念 奋力夺取新时代中国特色社会主义伟大胜利"},{"FROMNAME":"九三学社中央宣传部","SUBTITLE":"坐在十九大开幕式现场,聆听习近平总书记的报告,心中感受可以用八个字来概括。 感慨","SHOWTIME":"2017-10-22","ID":"30441476","IMAGEURL":null,"RN":8,"TITLE":"邵鸿:明使命 干实事 上台阶"},{"FROMNAME":"九三学社中央宣传部","SUBTITLE":"太行山东麓、滹沱河北岸,珠藏玉蕴,山川毓秀。坐落在景色优美的太行深处的西柏坡中学","SHOWTIME":"2017-10-22","ID":"30441475","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2017/10/22/22_12_58_629_76523_tp1.jpg","RN":9,"TITLE":"九三人情系革命老区 \u201c邬玉良奖学金\u201d温暖莘莘学子"},{"FROMNAME":"九三学社四川省委","SUBTITLE":"1017日,全国政协副主席、九三学社中央主席韩启德在京听取筹建\u201c中国\u2022李庄中学","SHOWTIME":"2017-10-20","ID":"30441473","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2017/10/23/09_50_47_137_74167_mmexport1508723175976.jpg","RN":10,"TITLE":"韩启德:助力李庄中学向一流学校迈进"},{"FROMNAME":"中国网","SUBTITLE":"1018日,中国共产党第十九次代表大会胜利开幕。习近平同志在十九大报告\u201c繁荣发","SHOWTIME":"2017-10-20","ID":"30441474","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2017/10/20/21_43_36_913_34979_c03fd54abc3e1b541de80f.png","RN":11,"TITLE":"刘月宁:创作和传播\u201c讲格调\u201d的中国音乐作品是我的使命"},{"FROMNAME":"九三学社上海市委","SUBTITLE":"1020日下午,九三学社中央副主席、市政协副主席、社上海市委主委赵雯主持召开九","SHOWTIME":"2017-10-20","ID":"30441472","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2017/10/20/21_05_32_294_15709_1.webp.jpg","RN":12,"TITLE":"学习中共十九大报告精神 赵雯主持召开主委会议并与社纺织委员会社员座谈"},{"FROMNAME":"九三学社贵州省委","SUBTITLE":"中国共产党第十九次全国代表大会是在全面建成小康社会决胜阶段、中国特色社会主义进入","SHOWTIME":"2017-10-20","ID":"30375951","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2017/10/20/17_09_02_747_49499_hzh.jpg","RN":13,"TITLE":"黄宗洪:不忘合作初心 牢记职责使命"},{"FROMNAME":"九三学社中央宣传部","SUBTITLE":"九三学社福建省委主委  洪捷序 在全面建成小康社会决胜阶段、中国特色社会主义发展","SHOWTIME":"2017-10-20","ID":"30375950","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2017/10/20/15_50_56_979_66831_hzwbzz.jpg","RN":14,"TITLE":"九三学社省级主委畅谈十九大(二)"},{"FROMNAME":"九三学社黑龙江省委","SUBTITLE":"习近平同志在党的十九大报告中指出:\u201c坚持长期共存、互相监督、肝胆相照、荣辱与共,","SHOWTIME":"2017-10-20","ID":"30375949","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2017/10/20/11_36_06_843_77987_574e9258d109b3def515ea72cebf6c81800a4c05.jpg","RN":15,"TITLE":"庞达:站准新时代方位建设高素质的中国特色社会主义参政党省级组织"},{"FROMNAME":"九三学社上海市委","SUBTITLE":"1018日,中国共产党第十九次全国代表大会在北京人民大会堂隆重开幕。习近平代表","SHOWTIME":"2017-10-20","ID":"30375940","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2017/10/20/09_48_22_056_33850_640.jpg","RN":16,"TITLE":"九三学社上海市委热议中共十九大报告"},{"FROMNAME":"九三学社北京市委","SUBTITLE":"九三学社中央书画院、北京九三书画院联合举办书画交流笔会","SHOWTIME":"2017-10-20","ID":"04317e3c443b43f7b990b348223b2806","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2017/10/20/14_50_47_586_50115_05bacfd511734eabb12980b50b979ddf_4M1A8675.jpg","RN":17,"TITLE":"迎庆十九大 丹青颂祖国"},{"FROMNAME":"人民政协报","SUBTITLE":"听了党的十九大报告,非常振奋人心。报告指出,要着力解决突出环境问题。坚持全民共治","SHOWTIME":"2017-10-20","ID":"30375939","IMAGEURL":null,"RN":18,"TITLE":"吴鸿:从牛栏猪栏到茶吧咖啡厅"},{"FROMNAME":"《中国政协》杂志","SUBTITLE":"对政协委员来说,提案绝不是简单地提交上去一张A4纸,一字一句中,都凝结着民生期待","SHOWTIME":"2017-10-20","ID":"30375938","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2017/10/20/09_34_08_420_90534_11.jpg","RN":19,"TITLE":"吴鸿:为基层一线建言"},{"FROMNAME":"人民网-观点频道","SUBTITLE":"习近平总书记向党的十九大所作的报告,除了振奋人心、牵动全球的\u201c新时代\u201d\u201c新思想","SHOWTIME":"2017-10-20","ID":"30375937","IMAGEURL":null,"RN":20,"TITLE":"陈利浩:有感于十九大报告的\u201c情怀\u201d"}]     */    private String result;    private List<DataScrollEntity> dataScroll;    private List<DataEntity> data;    public void setResult(String result) {        this.result = result;    }    public void setDataScroll(List<DataScrollEntity> dataScroll) {        this.dataScroll = dataScroll;    }    public void setData(List<DataEntity> data) {        this.data = data;    }    public String getResult() {        return result;    }    public List<DataScrollEntity> getDataScroll() {        return dataScroll;    }    public List<DataEntity> getData() {        return data;    }    public class DataScrollEntity {        /**         * FROMNAME : 九三学社中央宣传部         * SUBTITLE : null         * SHOWTIME : 2017-10-15         * ID : 30310406         * IMAGEURL : /11002/upload/webcms/content/image/2017/10/15/14_56_29_117_12420_01.jpg         * RN : 1         * TITLE : 九三学社中央科学座谈会聚焦文物考古与丝绸之路         */        private String FROMNAME;        private String SUBTITLE;        private String SHOWTIME;        private String ID;        private String IMAGEURL;        private int RN;        private String TITLE;        public void setFROMNAME(String FROMNAME) {            this.FROMNAME = FROMNAME;        }        public void setSUBTITLE(String SUBTITLE) {            this.SUBTITLE = SUBTITLE;        }        public void setSHOWTIME(String SHOWTIME) {            this.SHOWTIME = SHOWTIME;        }        public void setID(String ID) {            this.ID = ID;        }        public void setIMAGEURL(String IMAGEURL) {            this.IMAGEURL = IMAGEURL;        }        public void setRN(int RN) {            this.RN = RN;        }        public void setTITLE(String TITLE) {            this.TITLE = TITLE;        }        public String getFROMNAME() {            return FROMNAME;        }        public String getSUBTITLE() {            return SUBTITLE;        }        public String getSHOWTIME() {            return SHOWTIME;        }        public String getID() {            return ID;        }        public String getIMAGEURL() {            return IMAGEURL;        }        public int getRN() {            return RN;        }        public String getTITLE() {            return TITLE;        }    }    public class DataEntity {        /**         * FROMNAME : 九三学社中央宣传部         * SUBTITLE : Get the Flash Player to see this player.         * SHOWTIME : 2017-10-19         * ID : 30310476         * IMAGEURL : null         * RN : 1         * TITLE : 九三学社中央致信祝贺中共十九大胜利召开         */        private String FROMNAME;        private String SUBTITLE;        private String SHOWTIME;        private String ID;        private String IMAGEURL;        private int RN;        private String TITLE;        public void setFROMNAME(String FROMNAME) {            this.FROMNAME = FROMNAME;        }        public void setSUBTITLE(String SUBTITLE) {            this.SUBTITLE = SUBTITLE;        }        public void setSHOWTIME(String SHOWTIME) {            this.SHOWTIME = SHOWTIME;        }        public void setID(String ID) {            this.ID = ID;        }        public void setIMAGEURL(String IMAGEURL) {            this.IMAGEURL = IMAGEURL;        }        public void setRN(int RN) {            this.RN = RN;        }        public void setTITLE(String TITLE) {            this.TITLE = TITLE;        }        public String getFROMNAME() {            return FROMNAME;        }        public String getSUBTITLE() {            return SUBTITLE;        }        public String getSHOWTIME() {            return SHOWTIME;        }        public String getID() {            return ID;        }        public String getIMAGEURL() {            return IMAGEURL;        }        public int getRN() {            return RN;        }        public String getTITLE() {            return TITLE;        }    }}
微笑微笑微笑views包下 MyListView 类
public class MyListView extends ListView {    public MyListView(Context context) {        super(context);    }    public MyListView(Context context, AttributeSet attrs) {        super(context, attrs);    }    public MyListView(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);        super.onMeasure(widthMeasureSpec, expandSpec);    }}
微笑微笑微笑Utils包下 ImageloaderUtil 类
public class ImageloaderUtil {    /**     * ImageLoader的配置     * @param context     */    public static void initConfig(Context context) {        //配置//        File cacheFile=context.getExternalCacheDir();        File cacheFile= new File(Environment.getExternalStorageDirectory()+"/"+"imgages");        ImageLoaderConfiguration config=new ImageLoaderConfiguration.Builder(context)                .memoryCacheExtraOptions(480, 800)//缓存图片最大的长和宽                .threadPoolSize(2)//线程池的数量                .threadPriority(4)                .memoryCacheSize(2*1024*1024)//设置内存缓存区大小                .diskCacheSize(20*1024*1024)//设置sd卡缓存区大小                .diskCache(new UnlimitedDiscCache(cacheFile))//自定义缓存目录                .writeDebugLogs()//打印日志内容                .diskCacheFileNameGenerator(new Md5FileNameGenerator())//给缓存的文件名进行md5加密处理                .build();        ImageLoader.getInstance().init(config);    }    /**     * 获取图片设置类     * @return     */    public static DisplayImageOptions getImageOptions(){        DisplayImageOptions optionsoptions=new DisplayImageOptions.Builder()                .cacheInMemory(true)//使用内存缓存                .cacheOnDisk(true)//使用磁盘缓存                .bitmapConfig(Bitmap.Config.RGB_565)//设置图片格式                .build();        return optionsoptions;    }}
微笑微笑微笑Utils包下 MD5Encoder 类
public class MD5Encoder {    public static String encode(String string) throws Exception {        byte[] hash = MessageDigest.getInstance("MD5").digest(string.getBytes("UTF-8"));        StringBuilder hex = new StringBuilder(hash.length * 2);        for (byte b : hash) {            if ((b & 0xFF) < 0x10) {                hex.append("0");            }            hex.append(Integer.toHexString(b & 0xFF));        }        return hex.toString();    }}
微笑微笑微笑Utils包下 MyBannerImageLoader 类
public class MyBannerImageLoader extends ImageLoader {    @Override    public void displayImage(Context context, Object path, ImageView imageView) {        //加载图片的还是使用 我们之前学过的 ImageLoader        com.nostra13.universalimageloader.core.ImageLoader.getInstance().displayImage(path.toString(),imageView,ImageloaderUtil.getImageOptions());    }}
微笑微笑微笑Utils包下 MyTask 类
public class MyTask extends AsyncTask<String,Void,String> {    //申请一个接口类对象    private  Icallbacks icallbacks;    //将无参构造设置成私有的,使之在外部不能够调用    private MyTask(){}    //定义有参构造方法    public MyTask(Icallbacks icallbacks) {        this.icallbacks = icallbacks;    }    @Override    protected String doInBackground(String... params) {        String str="";        try {             //使用HttpUrlConnection            URL url=new URL(params[0]);            HttpURLConnection connection=(HttpURLConnection) url.openConnection();            connection.setRequestMethod("GET");            connection.setReadTimeout(5000);            connection.setConnectTimeout(5000);            if(connection.getResponseCode()==200){                InputStream inputStream=connection.getInputStream();                //调用工具类中的静态方法                str=StreamToString.streamToStr(inputStream,"utf-8");            }        } catch (MalformedURLException e) {            e.printStackTrace();        }catch (IOException e){            e.printStackTrace();        }        return str;    }    @Override    protected void onPostExecute(String s) {        super.onPostExecute(s);        //解析,封装到bean,更新ui组件        icallbacks.updateUiByjson(s);    }    //定义一个接口    public interface Icallbacks{        /**         * 根据回传的json字符串,解析并更新页面组件         * @param jsonstr         */        void updateUiByjson(String jsonstr);    }}
微笑微笑微笑Utils包下 NetStateUtil 类
public class MyTask extends AsyncTask<String,Void,String> {    //申请一个接口类对象    private  Icallbacks icallbacks;    //将无参构造设置成私有的,使之在外部不能够调用    private MyTask(){}    //定义有参构造方法    public MyTask(Icallbacks icallbacks) {        this.icallbacks = icallbacks;    }    @Override    protected String doInBackground(String... params) {        String str="";        try {             //使用HttpUrlConnection            URL url=new URL(params[0]);            HttpURLConnection connection=(HttpURLConnection) url.openConnection();            connection.setRequestMethod("GET");            connection.setReadTimeout(5000);            connection.setConnectTimeout(5000);            if(connection.getResponseCode()==200){                InputStream inputStream=connection.getInputStream();                //调用工具类中的静态方法                str=StreamToString.streamToStr(inputStream,"utf-8");            }        } catch (MalformedURLException e) {            e.printStackTrace();        }catch (IOException e){            e.printStackTrace();        }        return str;    }    @Override    protected void onPostExecute(String s) {        super.onPostExecute(s);        //解析,封装到bean,更新ui组件        icallbacks.updateUiByjson(s);    }    //定义一个接口    public interface Icallbacks{        /**         * 根据回传的json字符串,解析并更新页面组件         * @param jsonstr         */        void updateUiByjson(String jsonstr);    }}
微笑微笑微笑Utils包下 StreamToString 类
public class StreamToString {    public static String streamToStr(InputStream inputStream,String chartSet){        StringBuilder builder=new StringBuilder();        try {            BufferedReader br=new BufferedReader(new InputStreamReader(inputStream,chartSet));            String con;            while ((con=br.readLine())!=null){                builder.append(con);            }            br.close();            return builder.toString();        } catch (Exception e) {            e.printStackTrace();        }        return "";    }}
微笑微笑微笑fragments包下 DiscoveryFragment 类
public class DiscoveryFragment extends Fragment {    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View v=inflater.inflate(R.layout.discovery_layout,null);        return v;    }}
微笑微笑微笑fragments包下 DownFragment 类
public class DownFragment extends Fragment {    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View v=inflater.inflate(R.layout.down_layout,null);        return v;    }}
微笑微笑微笑fragments包下 IndexFragment 类
public class IndexFragment extends Fragment {    private TabLayout myTab;    private ViewPager viewPager;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View v=inflater.inflate(R.layout.index_layout,null);        myTab = v.findViewById(R.id.myTab);        viewPager = v.findViewById(R.id.vp);        return v;    }    @Override    public void onActivityCreated(@Nullable Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        //初使化标题        List<String> titles=new ArrayList<>();        titles.add("推荐");        titles.add("课程");        titles.add("实战");        titles.add("职业路径");        //设置适配器-注意:传递的fragmentManager getChild...... 不是 getSupport...        viewPager.setAdapter(new MyPagerAdapter(getChildFragmentManager(),titles));        //设置一次加载所有页面        viewPager.setOffscreenPageLimit(titles.size());        //tabLayoutviewpager建立关联        myTab.setupWithViewPager(viewPager);    }}
微笑微笑微笑fragments包下 MeFragment 类
public class MeFragment extends Fragment {    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View v=inflater.inflate(R.layout.me_layout,null);        return v;    }}
微笑微笑微笑fragments包下 RecommendFragment 类
public class RecommendFragment extends Fragment {    private Banner myBanner;    private PullToRefreshScrollView scrollView;    private ListView listView;    //列表显示的数据    private List<Result.DataEntity> datas=new ArrayList<>();    private MyAdapter myAdapter;    //页数    private int startNum=0;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View v=View.inflate(getActivity(), R.layout.recommend_layout,null);        myBanner= (Banner) v.findViewById(R.id.myBanner);        scrollView = (PullToRefreshScrollView) v.findViewById(R.id.refresh_scroll_view);        listView = (ListView) v.findViewById(R.id.lv);        return v;    }    @Override    public void onActivityCreated(@Nullable Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        initRefreshScrollView();        //请求数据        addToTop();    }    public void initRefreshScrollView(){        //设置模式        scrollView.setMode(PullToRefreshBase.Mode.BOTH);        //设置头尾布局显示的文本        ILoadingLayout headerLables=scrollView.getLoadingLayoutProxy(true,false);        headerLables.setPullLabel("下拉刷新");        headerLables.setRefreshingLabel("正在刷新");        headerLables.setReleaseLabel("松开刷新");        ILoadingLayout footerLables=scrollView.getLoadingLayoutProxy(false,true);        footerLables.setPullLabel("上拉加载");        footerLables.setRefreshingLabel("正在加载");        footerLables.setReleaseLabel("松开加载");        //设置监听事件        scrollView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {            @Override            public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) {                //下拉刷新                addToTop();                closeRefresh();            }            @Override            public void onPullUpToRefresh(PullToRefreshBase<ScrollView> refreshView) {                //上拉加载更多                addToBottom();                closeRefresh();            }        });    }    public void addToBottom(){        startNum=startNum+20;        //请求数据        MyTask myTask=new MyTask(new MyTask.Icallbacks() {            @Override            public void updateUiByjson(String jsonstr) {                Gson gson=new Gson();                Result result=gson.fromJson(jsonstr, Result.class);                //得到列表显示的数据                datas.addAll(result.getData());                //设置适配器                setAdapter();                //设置轮播图                setBanner(result.getDataScroll());            }        });        myTask.execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum="+startNum);    }    public void addToTop(){        //请求数据        MyTask myTask=new MyTask(new MyTask.Icallbacks() {            @Override            public void updateUiByjson(String jsonstr) {                Gson gson=new Gson();                Result result=gson.fromJson(jsonstr, Result.class);                //清空                datas.clear();                //得到列表显示的数据                datas.addAll(result.getData());                //设置适配器                setAdapter();                //设置轮播图                setBanner(result.getDataScroll());            }        });        myTask.execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0");    }    /**     * 设置轮播图     * @param lists 图片集合数据     */    public void setBanner(List<Result.DataScrollEntity> lists){        if(lists==null){            return;        }        List<String> picPaths=new ArrayList<>();        for(int i=0;i<lists.size();i++){            Log.d("zzz",""+lists.get(i).getIMAGEURL());            picPaths.add("http://www.93.gov.cn"+lists.get(i).getIMAGEURL());        }        myBanner.setImages(picPaths);//设置图片集合        myBanner.setImageLoader(new MyBannerImageLoader());//设置图片加载器        myBanner.isAutoPlay(true);//设置是否是自动播放        myBanner.setDelayTime(2000);//设置每张图片的播放的间隔时间        myBanner.start();//开始执行    }    /**     * 设置适配器     */    public void setAdapter(){        if(myAdapter==null){            myAdapter=new MyAdapter(datas,getActivity());            listView.setAdapter(myAdapter);        }else{            myAdapter.notifyDataSetChanged();        }    }    /**     * 关闭刷新     */    public void closeRefresh(){        new Handler().postDelayed(new Runnable() {            @Override            public void run() {                scrollView.onRefreshComplete();            }        },1000);    }}

阅读全文
0 0