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

编程入门 行业动态 更新时间:2024-10-28 11:33:51

点评<a href=https://www.elefans.com/category/jswz/34/1765373.html style=头条每过3秒钟切换一条 下面用AsyncTask的类解析放入集合"/>

点评头条每过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 = "/?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);}}
}

更多推荐

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

本文发布于:2024-02-16 19:08:45,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1691146.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:头条   放入   点评   AsyncTask

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!