handler三秒轮播数据
来源:互联网 发布:打怪升级的网络手游 编辑:程序博客网 时间:2024/06/09 05:30
//activity_main
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="animtest.com.example.e531.week1_10month.MainActivity"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Hello World!" android:id="@+id/tv_news"/> <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/lv" android:layout_below="@+id/tv_news"> </ListView></RelativeLayout>
//item.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/img"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv_title"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv_date"/></LinearLayout>
//MainActivity
package animtest.com.example.e531.week1_10month;import android.os.AsyncTask;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;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 com.google.gson.Gson;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.util.EntityUtils;import org.json.JSONArray;import org.json.JSONException;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.ArrayList;import java.util.List;import java.util.logging.Handler;import java.util.logging.LogRecord;public class MainActivity extends AppCompatActivity { private TextView tv; private ListView lv; private List<String> datas=new ArrayList<String>(); private List<News> newDatas; private int index=0; private android.os.Handler myHandler=new android.os.Handler(){ @Override public void handleMessage(Message msg) { tv.setText(datas.get(index%datas.size())); index++; //延迟3秒再次发送消息 sendEmptyMessageDelayed(1,3000); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv=(TextView) findViewById(R.id.tv_news); lv= (ListView) findViewById(R.id.lv); //开启一个了线程 new Thread(){ @Override public void run() { try { //1.创建URL URL url=new URL("http://www.toutiao.com/hot_words/"); //2.打开连接,进行请求 HttpURLConnection connection= (HttpURLConnection) url.openConnection(); //3.设置 connection.setRequestMethod("GET"); connection.setReadTimeout(5000); connection.setConnectTimeout(5000); //4.判断响应码 if(connection.getResponseCode()==200){ //5.得到返回结果 InputStream stream=connection.getInputStream(); //将流转换成字符串 String str=streamToString(stream); //进行解析 getJsonData(str); //发送一个空消息 myHandler.sendEmptyMessage(1); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }.start(); } public void getJsonData(String str){ try { //Gson 原生解析 JSONArray array=new JSONArray(str); for(int i=0;i<array.length();i++){ String data=array.optString(i); datas.add(data); } } catch (JSONException e) { e.printStackTrace(); } } public String streamToString(InputStream inputStream){ StringBuilder builder=new StringBuilder(); try { BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream,"utf-8")); String con; while ((con=bufferedReader.readLine())!=null){ builder.append(con); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return builder.toString(); } class MyTask extends AsyncTask<String,Void,String> { @Override protected String doInBackground(String... params) { //1.创建httpClient HttpClient htttpClient=new DefaultHttpClient(); //2.创建httpget HttpGet httpGet=new HttpGet(params[0]); try { //3.执行请求 HttpResponse response=htttpClient.execute(httpGet); //4.判断响应吗 if(response.getStatusLine().getStatusCode()==200){ //5得到结果 HttpEntity entity=response.getEntity(); //6.将结果转换为String return EntityUtils.toString(entity); } } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); //使用gson 进行解析 Gson gson=new Gson(); Result result=gson.fromJson(s,Result.class); Log.d("zzz",result.toString()); newDatas=result.getNewslist(); //显在listView列表 lv.setAdapter(new MyAdapter()); } } class MyAdapter extends BaseAdapter{ @Override public int getCount() { return newDatas.size(); } @Override public Object getItem(int position) { return null; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if(convertView==null){ convertView=View.inflate(MainActivity.this,R.layout.item,null); holder=new ViewHolder(); holder.tvTitle= (TextView) convertView.findViewById(R.id.tv_title); holder.tvDate= (TextView) convertView.findViewById(R.id.tv_date); holder.imageView=(ImageView) convertView.findViewById(R.id.img); convertView.setTag(holder); }else{ holder=(ViewHolder) convertView.getTag(); } holder.tvTitle.setText(newDatas.get(position).getTitle()); holder.tvDate.setText(newDatas.get(position).getCtime()); return convertView; } @Override public long getItemId(int position) { return 0; } class ViewHolder{ TextView tvTitle; TextView tvDate; ImageView imageView; } }}
//News
package animtest.com.example.e531.week1_10month;/** * Created by e531 on 2017/10/10. */public class News { private String title; private String ctime; private String picUrl; @Override public String toString() { return "News{" + "title='" + title + '\'' + ", ctime='" + ctime + '\'' + ", picUrl='" + picUrl + '\'' + '}'; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getCtime() { return ctime; } public void setCtime(String ctime) { this.ctime = ctime; } public String getPicUrl() { return picUrl; } public void setPicUrl(String picUrl) { this.picUrl = picUrl; }}
//Result
package animtest.com.example.e531.week1_10month;import java.util.List;/** * Created by e531 on 2017/10/10. */public class Result { private List<News> newslist; public List<News> getNewslist() { return newslist; } public void setNewslist(List<News> newslist) { this.newslist = newslist; } @Override public String toString() { return "Result{" + "newslist=" + newslist + '}'; }}
阅读全文
0 0
- handler三秒轮播数据
- Handler传递数据
- 使用Handler下载数据
- Solr 数据导入Handler
- Jquery+Handler实现数据初始化
- Jquery+Handler实现数据初始化
- Android 利用handler传递数据
- Handler传递数据更新进度条
- Handler利用bundle传递数据
- handler传递多种复杂数据
- handler实现接口数据解析
- Android Handler不同界面发送数据
- android 两个 activity 用 handler传递数据
- 获取数据并通过handler更新
- Android之Handler异步处理数据
- Android:ListView数据异步加载、Handler、AsyncTask
- android子线程handler获取数据
- Android 用Handler传递基本数据
- 新媒行面试指南
- ftp工作原理详解
- 怎样写工科研究生论文
- printf多个自增自减表达式的底层实现原理
- Android 支持库 v26
- handler三秒轮播数据
- Android 8.1 开发者预览版 —— 为 ML 机器学习做好准备的 Oreo 升级版
- Android Oreo 后台策略
- Bitmap
- 【转】ZFS读缓存深入研究:ARC
- Effective C++ 8. Prevent exceptions from leaving destructors
- 一起来学SpringCloud之
- 2017年10月25日作业
- vue小结笔记(4)之v-resource应用