点评头条每过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); } }}
阅读全文
0 0
- 点评头条每过3秒钟切换一条 下面用AsyncTask的类解析放入集合
- 每过3秒钟更新下一条点评头条的内容
- 评头条,每过3秒钟切换一条
- Handler + HttpUrlConnection每过3秒钟切换一条Textview
- 类似大众点评_每3秒切换一条消息
- 用ImageView展示数据,并使用handler每过3秒钟切换一张图片
- 头条信息3秒切换以及json解析数组
- 今日头条的一条笔试题
- iOS 去除NavigationController导航条最下面的一条横线
- 头条数据切换
- 抓取今日头条指定作者下面所有的文章,根据头条上面的userID
- 取出List集合中每条记录的指定值
- 取每组数据的第一条记录和最后一条记录的SQL语句
- 在Java的Set集合中放入自定义类
- 开心的过每一天
- 开心的过每一天
- svn每两秒钟自动更新
- crontab每多少秒钟调度
- Android 图片预览模仿朋友圈查看图片效果放大图片,左右滑动
- Android中第二次启动程序时,去除引导页
- [自学]数据库ER图基础概念整理(转)
- 【API性能】2、jProfiler检测实际案例
- 谁能告诉我怎么写Android的电话簿
- 点评头条每过3秒钟切换一条 下面用AsyncTask的类解析放入集合
- API接口
- HTML定位解析
- Java代理模式
- UVA 11374 Airport Express(Dijkstra 最短路)
- 9种基本数据类型
- SpringMVC重要注解(一)@ExceptionHandler和@ResponseStatus
- C#装箱与拆箱
- effective c++ 关于异常安全