第一周周考
来源:互联网 发布:妆美堂shobi美瞳 知乎 编辑:程序博客网 时间:2024/06/01 07:44
//main方法
import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.AsyncTask;import android.os.Handler;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.conn.ssl.AllowAllHostnameVerifier;import org.apache.http.conn.ssl.SSLSocketFactory;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.net.URLConnection;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity { private ListView lv; private TextView tv; private List<String> datas = new ArrayList<String>(); private List<News> newDatas; private int index = 0; private Handler myHandler = new 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); lv = (ListView) findViewById(R.id.lv); tv = (TextView) findViewById(R.id.tv_news); //开启一个子线程 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); //进行解析 getJsonDara(str); //发送空消息给Handle myHandler.sendEmptyMessage(1); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }.start(); MyTask myTask = new MyTask(); myTask.execute("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page=1"); } private 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(); } private void getJsonDara(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(); } } class MyTask extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... params) { //因为请求的是https协议的网址,eclipse下使用HttpGet请求会报错,需要添加以下这行代码 SSLSocketFactory.getSocketFactory().setHostnameVerifier(new AllowAllHostnameVerifier()); //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); Log.i("zzz", s); //使用gson 进行解析 Gson gson = new Gson(); Result result = gson.fromJson(s, Result.class); Log.d("zzz", result.toString()); newDatas = result.getNewslist(); Log.i("zzz", newDatas.toString()); //显在listView列表 lv.setAdapter(new MyAdapter()); } } class MyAdapter extends BaseAdapter { @Override public int getCount() { return newDatas.size(); } @Override public Object getItem(int position) { return newDatas.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = View.inflate(MainActivity.this, R.layout.layout, null); holder = new ViewHolder(); holder.tvTitle = (TextView) convertView.findViewById(R.id.tv_title); holder.tvData = (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.tvData.setText(newDatas.get(position).getCtime()); if (newDatas.get(position).getPicUrl() != null) { //给img设置tag,具有唯一性;图片的url -url有时是相同的,所以tag的值最好改为position holder.imageView.setTag(newDatas.get(position).getPicUrl()); //图片使用异步加载 MyPicTask myPicTask = new MyPicTask(holder.imageView); myPicTask.execute(newDatas.get(position).getPicUrl()); } Log.i("zzz", newDatas.get(position).getTitle()); return convertView; } class ViewHolder { TextView tvTitle; TextView tvData; ImageView imageView; } } class MyPicTask extends AsyncTask<String, Void, Bitmap> { private ImageView imageView; String sss; public MyPicTask(ImageView imageView) { this.imageView = imageView; } @Override protected Bitmap doInBackground(String... params) { Bitmap bitmap = null; try { sss = params[0]; //1.创建url对象 URL url = new URL(params[0]); //2.打开连接 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //3.设置 connection.setRequestMethod("GET"); connection.setConnectTimeout(5000); connection.setConnectTimeout(5000); //4.得到结果码,并且判断 int code = connection.getResponseCode(); if (code == 200) { //5.得到结果 InputStream inputStream = connection.getInputStream(); //将流转换成Bitmap对象 bitmap = BitmapFactory.decodeStream(inputStream); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return bitmap; } @Override protected void onPostExecute(Bitmap bitmap) { super.onPostExecute(bitmap); if (bitmap != null) { String tag = (String) imageView.getTag(); if (tag.equals(sss)) { //显示图片 imageView.setImageBitmap(bitmap); } } } }}
//BeanGson解析
public class News { private String title; private String ctime; private String picUrl; public String getTitle() { return title; } public String getCtime() { return ctime; } public String getPicUrl() { return picUrl; } @Override public String toString() { return "News{" + "title='" + title + '\'' + ", ctime='" + ctime + '\'' + ", picUrl='" + picUrl + '\'' + '}'; }}
package com.example.aplew;import java.util.List;/** * Created by 知足 on 2017/10/11. */public class Result { private List<News> newslist; public List<News> getNewslist() { return newslist; } @Override public String toString() { return "Result{" + "newslist=" + newslist + '}'; }}
//activity-main
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.aplew.MainActivity" android:orientation="vertical" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:text="dfdfdfd" android:textSize="30dp" android:gravity="center" android:id="@+id/tv_news" /> <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/lv" /></LinearLayout>//layout<?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"> <ImageView android:layout_width="150px" android:layout_height="150px" android:id="@+id/img" android:src="@mipmap/ic_launcher" /> <LinearLayout android:layout_marginTop="20dp" android:layout_marginLeft="50dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv_title" android:text="dsifjdifdj" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv_date" android:text="dsifjdifdj" /> </LinearLayout></LinearLayout>
//要加的权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
阅读全文
0 0
- 第一周周考
- 上个周周考没有考第一
- 第二周周考
- 第一周周末
- 第一周周报
- 第一周周赛
- 第一周周工作表
- 第一周周工作表
- 第一周周报
- 冬令营第一周周报
- 冬令营第一周周报
- 第一周周报
- 假期第一周周报
- 第一周周三
- 第一周周四
- 第一周周五
- 第一周周六
- 第一周周日
- 排序算法学习经验(三)
- java-collection
- SQL教程——基本命令
- 过滤器拦截所有手机端重定向
- VIN码/车架号识别,手机移动端OCR扫描
- 第一周周考
- 面试小记
- PHP学习笔记
- python数据结构之树和二叉树(先序遍历、中序遍历和后序遍历)
- 确定跳水比赛名次
- 开启我的博客之旅
- arm MMU详解
- TCP SYN拒绝服务攻击
- zabbix监控mysql相关配置内容