第一周周考

来源:互联网 发布:妆美堂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>

原创粉丝点击