PullToRefresh



解析xml用pull方法,联网请求用AsyncTask和HttpURLConnection
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();
  }
     
     
    }
}


/展示书的界面,标题,发布时间和阅读量

import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.GridView;

import com.bwie.adapter.MyAdapter;
import com.bwie.pullre.PullToRefreshView;
import com.bwie.pullre.PullToRefreshView.OnFooterRefreshListener;
import com.bwie.pullre.PullToRefreshView.OnHeaderRefreshListener;
import com.bwie.type.Book;
import com.bwie.type.Datas;
import com.google.gson.Gson;

public class DetailActivity extends Activity implements
  OnHeaderRefreshListener, OnFooterRefreshListener {
 PullToRefreshView mPullToRefreshView;
 GridView mGridView;
 String str = "http://apis.juhe.cn/goodbook/query?key=9d6ef8c31647a206e05fcaff70527182";
 private String id;
 private Datas fromJson;
 private int index = 0;
 private MyAdapter adapter;
 List<Book> list = new ArrayList<Book>();
 @SuppressLint("HandlerLeak")
 Handler handler = new Handler() {
  public void handleMessage(final android.os.Message msg) {

   switch (msg.what) {
   case 2:
    new Thread() {
     public void run() {
      String id2 = (String) msg.obj;
      List<Book> jsonString2 = getJsonString(str, id2, index,
        "10");
      list.addAll(jsonString2);
     };
    }.start();
    adapter.notifyDataSetChanged();
    break;

   case 3:
    new Thread() {
     public void run() {
      String id3 = (String) msg.obj;
      List<Book> jsonString3 = getJsonString(str, id3, index,
        "10");
      list.addAll(jsonString3);
     };
    }.start();
    adapter.notifyDataSetChanged();
    break;
   }
  }
 };

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  setContentView(R.layout.gridview_layout);
  mPullToRefreshView = (PullToRefreshView) findViewById(R.id.main_pull_refresh_view);
  mGridView = (GridView) findViewById(R.id.gridview);
  mPullToRefreshView.setOnHeaderRefreshListener(this);
  mPullToRefreshView.setOnFooterRefreshListener(this);
  
  id = getIntent().getStringExtra("id");
  new Thread() {
   public void run() {
    List<Book> jsonString = getJsonString(str, id, 1, "10");
    list.addAll(jsonString);
    runOnUiThread(new Runnable() {
     public void run() {
      adapter = new MyAdapter(list, getApplicationContext());
      Log.i("aaa", fromJson.getResult().getData().toString());
      mGridView.setAdapter(adapter);
     }
    });
   };
  }.start();
 }

 @Override
 public void onFooterRefresh(PullToRefreshView view) {
  // TODO Auto-generated method stub
  Message message = new Message();
  message.obj = id;
  message.what = 2;
  handler.handleMessage(message);
  mPullToRefreshView.onFooterRefreshComplete();
 }

 @Override
 public void onHeaderRefresh(PullToRefreshView view) {
  // TODO Auto-generated method stub
  Message message = new Message();
  message.obj = id;
  message.what = 3;
  handler.handleMessage(message);
  mPullToRefreshView.onHeaderRefreshComplete();
 }

 public List<Book> getJsonString(String url, String id, int pn, String rn) {
  List<Book> books = null;
  HttpClient httpClient = new DefaultHttpClient();
  HttpPost httppost = new HttpPost(url);
  List<NameValuePair> pairs = new ArrayList<NameValuePair>();
  pairs.add(new BasicNameValuePair("catalog_id", id));
  pairs.add(new BasicNameValuePair("pn", pn + ""));
  pairs.add(new BasicNameValuePair("rn", rn));
  try {
   httppost.setEntity(new UrlEncodedFormEntity(pairs, "utf-8"));
   HttpResponse execute = httpClient.execute(httppost);
   int statusCode = execute.getStatusLine().getStatusCode();
   if (statusCode == 200) {
    HttpEntity entity = execute.getEntity();
    String json = EntityUtils.toString(entity);
    Gson gson = new Gson();
    fromJson = gson.fromJson(json, Datas.class);
    books = fromJson.getResult().getData();
    Log.i("bbb",json);
    index++;
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  return books;
 }
}



/给详情界面加适配器

package com.bwie.adapter;

import java.util.List;

import com.bwie.type.Book;
import com.bwie.yuekao.R;
import com.lidroid.xutils.BitmapUtils;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
//自定义适配器
public class MyAdapter extends BaseAdapter {
    List<Book> list;
    Context context;
   
 public MyAdapter(List<Book> list, Context context) {
  super();
  this.list = list;
  this.context = context;
 }

 @Override
 public int getCount() {
  // TODO Auto-generated method stub
  return list.size();
 }

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

 @Override
 public long getItemId(int position) {
  // TODO Auto-generated method stub
  return position;
 }

 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
  ViewHolder viewHolder;
  if(convertView==null){
   viewHolder=new ViewHolder();
   convertView=LayoutInflater.from(context).inflate(R.layout.list_item,null);
   viewHolder.imageView=(ImageView) convertView.findViewById(R.id.image_item);
   viewHolder.t1=(TextView) convertView.findViewById(R.id.text01);
   viewHolder.t2=(TextView) convertView.findViewById(R.id.text02);
   viewHolder.t3=(TextView) convertView.findViewById(R.id.text03);
   convertView.setTag(viewHolder);
  }else{
   viewHolder=(ViewHolder) convertView.getTag();
  }
    //加载网络图片
     BitmapUtils bitmapUtils=new BitmapUtils(context);
     bitmapUtils.display(viewHolder.imageView,list.get(position).getImg());
     viewHolder.t1.setText(list.get(position).getSub1());
     viewHolder.t2.setText(list.get(position).getReading());
     viewHolder.t3.setText(list.get(position).getBytime());

  return convertView;
 }
   class ViewHolder{
    ImageView imageView;
    TextView t1,t2,t3;
   }
}



///bean类

public class Types {
 
 private String type;
 private String id;

}

public class Book {
    //封装类
    private String sub1;
    private String img;
    private String reading;
    private String bytime;
}

public class Books {
 
 List<Book> data;

}

public class Datas {

 private Books result;

}




布局

gridview_layout

<?xml version="1.0" encoding="utf-8"?>
<com.bwie.pullre.PullToRefreshView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_pull_refresh_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
   <GridView
        android:id="@+id/gridview"
        android:numColumns="3"
        android:verticalSpacing="10dip"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />
  
</com.bwie.pullre.PullToRefreshView>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值