要求: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); } } }