点评头条每过3秒钟切换一条 下面用AsyncTask的类解析放入集合

来源:互联网 发布:java并发log 编辑:程序博客网 时间:2024/06/04 20:34
要求:

1.    实现页面效果布局,最上方搜索框,下面是点评头条和列表 每过3秒钟切换一条(5分)

2.    创建HttpUrlConnection请求的方法,传入参数为请求的url(5分)

3.    创建HttpClient请求的方法,传入参数为请求的url(5分)

4.    进入页面时主线程创建Handler对象并重写处理消息的方法(5分),开启子线程(5分),

调用HttpUrlConnection请求的方法,传入点评头条的url(5分),网络请求结束后做数据的解析

并放入集合中(5分),获取到数据之后开启计时器(5分),每过3秒钟更新下一条点评头条的内容(5分),当集合数据展示到最后一条的时候,再重复从第一条开始(5分)

5.    自定义一个AsyncTask的类并重写其中必要的两个方法(5分),在创建子线程的同时,

执行AsyncTask的实例(5分),在异步方法中调用HttpClient请求的方法,url通过AsyncTask的

第一个参数传入(5分),在执行完成的回调方法中获取到网络请求成功的数据并做解析(5分)

package com.example.zhoukan;import android.graphics.Bitmap;import android.os.AsyncTask;import android.os.Handler;import android.os.Message;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import com.example.zhoukan.Itoos.itoos;import com.example.zhoukan.JavaBean.bean;import com.google.gson.Gson;import java.util.ArrayList;import java.util.List;import java.util.Timer;import java.util.TimerTask;public class MainActivity extends AppCompatActivity {    //路径    private String httpurl = "http://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page=1";    //集合    private List<bean.NewslistBean> newslist;    private List<bean.NewslistBean> list=new ArrayList<bean.NewslistBean>();    //初始值    int i = 0;    //handler机制    Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            //传过来的参数            String obj = (String) msg.obj;            //赋值            vp.setText(obj);        }    };    private TextView vp;    private ImageView img;    private ListView lv;    private Myadapert my;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //获取控件        vp = (TextView) findViewById(R.id.vp);        img = (ImageView) findViewById(R.id.img);        lv = (ListView) findViewById(R.id.lv);        my = new Myadapert();       lv.setAdapter(my);        //解析方法        jiexi();        //匿名类        new MyAsntask().execute(httpurl);    }    public void jiexi() {        //开启线程        new Thread() {            @Override            public void run() {                super.run();//实力化读出的方法                String ioss = itoos.ioss(httpurl);                //实力化Gson                Gson g = new Gson();                //获取类                bean bean = g.fromJson(ioss, bean.class);                //获取集合                newslist = bean.getNewslist();                //获取定时器                Timer tianapi = new Timer();   //                tianapi.schedule(new TimerTask() {                    @Override                    public void run() {                        //判断初判断大于等于0与小于集合的长度                        if (i >= 0 && i <= newslist.size() - 1) {                            //把i放入获取集合对象的下标                            com.example.zhoukan.JavaBean.bean.NewslistBean newslistBean = newslist.get(i);                            //获取title                            String title = newslistBean.getTitle();                            //实力化Message                            Message msg = new Message();                            //传值                            msg.obj = title;                            handler.sendMessage(msg);                            //下标++                            i++;                            //判断大于集合长度                        } else if (i > newslist.size() - 1) {                            //把i归0                            i = 0;                            //  //把i放入获取集合对象的下标                            com.example.zhoukan.JavaBean.bean.NewslistBean newslistBean = newslist.get(i);                            //获取title                            String title = newslistBean.getTitle();                            //实力化Message                            Message msg = new Message();                            //传值                            msg.obj = title;                            //                            handler.sendMessage(msg);                            i++;                        }                    }                }, 0, 3000);            }        }.start();    }//AsyncTask解析Url    class MyAsntask extends AsyncTask<String,Void,String>{        @Override        protected String doInBackground(String... strings) {            //s数组【            String ioss = strings[0];            //获取输入流            String ioss1 = itoos.ioss(ioss);            //返回            return ioss1;        }        @Override        protected void onPostExecute(String s) {//回调返回的直            super.onPostExecute(s);            //实力Gson            Gson g=new Gson();            //获取类            bean bean = g.fromJson(s, bean.class);            //获取集合            List<com.example.zhoukan.JavaBean.bean.NewslistBean> newslist = bean.getNewslist();            //放入另一个集合            list.addAll(newslist);            //刷新            my.notifyDataSetChanged();        }    }//获取适配器   class Myadapert extends BaseAdapter{       @Override       public int getCount() {           return list.size();       }       @Override       public Object getItem(int i) {           return null;       }       @Override       public long getItemId(int i) {           return 0;       }       @Override       public View getView(int i, View view, ViewGroup viewGroup) {          if(view==null){              view=View.inflate(MainActivity.this,R.layout.f1,null);          }           ImageView image = (ImageView)view.findViewById(R.id.img);           TextView tv = (TextView)view.findViewById(R.id.vp);           tv.setText(list.get(i).getTitle());//获取图片路径           String picUrl = list.get(i).getUrl();//实力匿名图片传过去ImageView控件           new MyBit(image).execute(picUrl);           return view;       }   }//匿名图片类    class MyBit extends AsyncTask<String,Void,Bitmap>{        ImageView image;//构造方法        public MyBit(ImageView image) {            this.image=image;        }        @Override        protected Bitmap doInBackground(String... strings) {            String ioss = strings[0];            Bitmap bit = itoos.bit(ioss);            return bit;        }        @Override        protected void onPostExecute(Bitmap bitmap) {            super.onPostExecute(bitmap);            image.setImageBitmap(bitmap);        }    }}