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

要求:

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);
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值