头条每过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的类解析放入集合
发布评论