PullToRefreshScrollView+ListView

来源:互联网 发布:淘宝达人官网 编辑:程序博客网 时间:2024/05/26 08:43

//activity_main.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"    android:layout_height="match_parent" tools:context="com.example.yuekao.MainActivity">    <com.handmark.pulltorefresh.library.PullToRefreshScrollView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/refresh"        >        <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/banner"                ></com.youth.banner.Banner>            <com.example.yuekao.MyListView                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:id="@+id/lv"></com.example.yuekao.MyListView>        </LinearLayout>    </com.handmark.pulltorefresh.library.PullToRefreshScrollView></RelativeLayout>

//item.xml适配器

<?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>

//Result

package com.example.yuekao.Been;import java.util.List;/** * Created by e531 on 2017/10/24. */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":"10月18日,举世瞩目的中国共产党第十九次全国代表大会在北京隆重开幕。 九三学社","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":"新华社合肥10月23日电(记者 徐海涛)记者从中国科学技术大学获悉,九三学社中央","SHOWTIME":"2017-10-24","ID":"30441488","IMAGEURL":null,"RN":4,"TITLE":"我国科学家在一维量子液体研究领域获重要进展"},{"FROMNAME":"九三学社上海市委","SUBTITLE":"10月23日上午,九三学社中央副主席、上海市政协副主席、九三学社上海市委主委赵雯","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":"10月17日,全国政协副主席、九三学社中央主席韩启德在京听取筹建\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":"10月18日,中国共产党第十九次代表大会胜利开幕。习近平同志在十九大报告\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":"10月20日下午,九三学社中央副主席、市政协副主席、社上海市委主委赵雯主持召开九","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":"10月18日,中国共产党第十九次全国代表大会在北京人民大会堂隆重开幕。习近平代表","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;        }    }}

//ImageloaderUtil

package com.example.yuekao;import android.content.Context;import android.graphics.Bitmap;import android.os.Environment;import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;import java.io.File;/** * Created by 123 on 2017/10/23. */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 UnlimitedDiskCache(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;    }}

//MImage

package com.example.yuekao;import android.content.Context;import android.widget.ImageView;import com.youth.banner.loader.ImageLoader;/** * Created by 123 on 2017/10/23. */public class MImage 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);}}

//MainActivity

package com.example.yuekao;import android.os.Handler;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.widget.ListView;import android.widget.ScrollView;import com.example.yuekao.Been.Result;import com.google.gson.Gson;import com.handmark.pulltorefresh.library.ILoadingLayout;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshScrollView;import com.youth.banner.Banner;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    private Banner banner;    private PullToRefreshScrollView scrollView;    private ListView lv;    private List<Result.DataEntity> datas=new ArrayList<>();    private MyAdapter myAdapter;    //页数    private int startNum=0;    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        banner = (Banner) findViewById(R.id.banner);        lv=(ListView)findViewById(R.id.lv);        scrollView = (PullToRefreshScrollView)findViewById(R.id.refresh);        lv = (ListView)findViewById(R.id.lv);        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());        }        banner.setImages(picPaths);//设置图片集合        banner.setImageLoader(new MImage());//设置图片加载器        banner.isAutoPlay(true);//设置是否是自动播放        banner.setDelayTime(2000);//设置每张图片的播放的间隔时间        banner.start();//开始执行    }    /**     * 设置适配器     */    public void setAdapter(){        if(myAdapter==null){            myAdapter=new MyAdapter(datas,this);            lv.setAdapter(myAdapter);        }else{            myAdapter.notifyDataSetChanged();        }    }    /**     * 关闭刷新     */    public void closeRefresh(){        new Handler().postDelayed(new Runnable() {            @Override            public void run() {                scrollView.onRefreshComplete();            }        },1000);    }}

//MyAdapter

package com.example.yuekao;import android.content.Context;import android.graphics.Bitmap;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.example.yuekao.Been.Result;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import java.util.List;/** * Created by e531 on 2017/10/14. */public class MyAdapter extends BaseAdapter {    private List<Result.DataEntity>  datas;    private Context context;    private DisplayImageOptions options;    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 = null;        if(convertView==null){            convertView=View.inflate(context, R.layout.item,null);            holder=new ViewHolder();            holder.tvTitle= (TextView) convertView.findViewById(R.id.tv_title);            holder.img= (ImageView) 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;    }}

//MyApplication

package com.example.yuekao;import android.app.Application;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;/** * Created by 123 on 2017/10/23. */public class MyApplication extends Application{    @Override    public void onCreate() {        super.onCreate();        ImageLoaderConfiguration imageLoaderConfiguration=new ImageLoaderConfiguration.Builder(this).build();        ImageLoader.getInstance().init(imageLoaderConfiguration);    }}

//MyListView

package com.example.yuekao;import android.content.Context;import android.util.AttributeSet;import android.widget.ListView;/** * Created by 123 on 2017/10/24. */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);    }}

//MyTask

package com.example.yuekao;import android.os.AsyncTask;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;/** * Created by 123 on 2017/10/23. */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);    }}

//StreamToString

package com.example.yuekao;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;/** * Created by 123 on 2017/10/23. */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 "";    }}
design+两包+联网权限+banner包+.name