Android使用AnysnTask強求數據

package com.bwie.yuekao;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import com.bwie.type.Types;
import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;


public class MainActivity extends Activity {
    private List<Types> types=null;
    private Types type=null;
    private ListView listView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView=(ListView) findViewById(R.id.list_main);
        new MyAsycnack().execute();
    }

    public class MyAsycnack extends AsyncTask<String, Integer, InputStream>{


        @Override
        protected InputStream doInBackground(String... params) {
            // TODO Auto-generated method stub
            InputStream inputStream = null;
            try {
                URL url=new URL("http://apis.juhe.cn/goodbook/catalog?key=9d6ef8c31647a206e05fcaff70527182&dtype=xml");
                HttpURLConnection connection=(HttpURLConnection) url.openConnection();
                connection.setRequestMethod("GET");
                connection.setReadTimeout(5000);
                connection.setConnectTimeout(5000);
                connection.connect();
                if(connection.getResponseCode()==200){
                    Log.i("aaa", 123+"0");
                    inputStream = connection.getInputStream();
                    Log.i("aaa", inputStream.toString());
                }
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return inputStream;
        }
        @Override
        protected void onPostExecute(final InputStream result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            getXmlString(result);
        }
    }
    public void getXmlString(InputStream stream){

        try {
            String tagName="";
            XmlPullParserFactory pullFactory = XmlPullParserFactory.newInstance();
            XmlPullParser parser = pullFactory.newPullParser();
            parser.setInput(stream, "UTF-8");
            int eventType = parser.getEventType();
            while(eventType!=XmlPullParser.END_DOCUMENT){
                switch (eventType) {

                case XmlPullParser.START_DOCUMENT:
                    types=new ArrayList<Types>();

                    break;

                case XmlPullParser.START_TAG:
                    tagName=parser.getName();
                    if(tagName.equals("item")){
                        type=new Types();
                    }
                    if(tagName.equals("catalog")){
                        type.setType(parser.nextText());
                    }else if(tagName.equals("id")){
                        type.setId(parser.nextText());
                    }
                    break;
                 case XmlPullParser.END_TAG:
                    if(parser.getName().equals("item")){
                        types.add(type);
                        Log.i("aaa", types.toString());
                    }
                    tagName="";
                    List<String> list=new ArrayList<String>();
                    for(int i=0;i<types.size();i++){
                      list.add(types.get(i).getType());
                    }
                    ArrayAdapter<String> adapter=new ArrayAdapter<String>(MainActivity.this,R.layout.list_type,R.id.tv_type,list);
                    listView.setAdapter(adapter);
                    listView.setOnItemClickListener(new OnItemClickListener() {

                        @Override
                        public void onItemClick(AdapterView<?> parent,
                                View view, int position, long id) {
                            // TODO Auto-generated method stub
                            Intent intent=new Intent(MainActivity.this,DetailActivity.class);
                            intent.putExtra("id", types.get(position).getId());
                            startActivity(intent);
                        }
                    });
                    break;
                }
                eventType = parser.next();
            }
        } catch (XmlPullParserException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章