第一周

来源:互联网 发布:博雅立方 知乎 编辑:程序博客网 时间:2024/05/16 06:23
package com.example.diyizhoulx;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;

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 com.bwei.bean.Bean;
import com.bwei.bean.Bean2;
import com.google.gson.Gson;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
    private ListView listview;
    private ProgressDialog pd;
    private List<Bean2> newslist;
   
    
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       listview=(ListView) findViewById(R.id.listview);         
    }   
    public void client(View v){
         
    }
    public void url(View v){
        //构造出来
        MyTask myTask=new MyTask();
        myTask.execute("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10");              
    }
    //Params地址   请求的地址的类型   String  Void
    //Progress  请求网络数据的进度   一般是  integer Void
    //Result    请网络数据得到的结果   一般是  json xml Void 自定义对象 List<?>    
    class MyTask extends AsyncTask<String, Void, String>{
        protected String doInBackground(String... params) {    
            String k="";
            try {
                
                
                
                
                
            /*        //创建HttpClient对象
               HttpClient hc=new DefaultHttpClient();
               
               //创建httpget对象
               HttpGet hg=new HttpGet(params[0]);
            
               //执行请求
                HttpResponse execute = hc.execute(hg);
                                
                int statusCode = execute.getStatusLine().getStatusCode();
               
                if(statusCode==200){
                    //得到请求的结果
                    HttpEntity entity = execute.getEntity();
                    
                    //把请求变成字符转
                     k=EntityUtils.toString(entity);
                }*/
                
                
                
                
                
                
                
                
            
                    URL url=new URL(params[0]);
                    //打开连接
//                    Toast.makeText(MainActivity.this, "进入", 0).show();
                    HttpURLConnection openConnection = (HttpURLConnection) url.openConnection();
                    
                    openConnection.setRequestMethod("GET");
                    openConnection.setReadTimeout(3000);
                    openConnection.setConnectTimeout(3000);                                    
                    //获取返回码  以此判断是否成功
                    int responseCode=openConnection.getResponseCode();                        
                    
                if(responseCode==200){
//                    Toast.makeText(MainActivity.this, "200", 0).show();
                    //通过流来得到值
                    InputStream inputStream = openConnection.getInputStream();                            
                     k=zstring(inputStream);
                    
                     Log.d("zzz", k);
                    Gson gson=new Gson();
                    Bean fromJson = gson.fromJson(k, Bean.class);
//                     Toast.makeText(MainActivity.this, "++++", 0).show();
                     newslist = fromJson.getNewslist();    
                }                     
                
                
                //java.net.UnknownHostException: Unable to resolve host "api.tianapi.com": No address associated with hostname                
            } catch (Exception e) {                
                e.printStackTrace();
            }             
            return k;
        }
        
        //在执行操作之前
        protected void onPreExecute() {         
            super.onPreExecute();
            
           pd=new     ProgressDialog(MainActivity.this);
           pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
           pd.setMessage("正在请求数据..");
           pd.show();
        }        
        //在执行操作之后
        
        protected void onPostExecute(String result) {        
            super.onPostExecute(result);
        if(pd!=null&&pd.isShowing()){
            pd.dismiss();            
        }    
        
         MyAdapter  adapter=new MyAdapter();
         listview.setAdapter(adapter);
        
        }        
    }    
    
    //返回字符串
    public String zstring(InputStream in){
        
        BufferedReader  br=new BufferedReader(new InputStreamReader(in));
        
        StringBuilder  builder=new StringBuilder();
        
        String con;        
        try {
            while((con=br.readLine())!=null){
                builder.append(con);                
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }        
        return builder.toString();     
    }
    //listview适配器
    class MyAdapter extends BaseAdapter{
        public int getCount() {
            
            return newslist.size();
        }

        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return newslist.get(position);
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder;
             Log.i("zzz", newslist.toString());
            if(convertView==null){
                convertView=View.inflate(MainActivity.this, R.layout.item, null);
                
                holder=new ViewHolder();
                
                holder.msg1=(TextView) convertView.findViewById(R.id.msg1);
                holder.msg2=(TextView) convertView.findViewById(R.id.msg2);
                holder.msg3=(TextView) convertView.findViewById(R.id.msg3);                            
        
                convertView.setTag(holder);
            }else{
                holder=(ViewHolder) convertView.getTag();                
            }
            holder.msg1.setText(newslist.get(position).getCtime());
            holder.msg2.setText(newslist.get(position).getTitle());
            holder.msg3.setText(newslist.get(position).getDescription());
            
            return convertView;
        }
        class ViewHolder{
            TextView msg1;
            TextView msg2;
            TextView msg3;            
        }       
    }   
}   

原创粉丝点击