Httputils请求数据Pull解析

package com.bwei.month_two;


import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;


import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;


import view.XListView;
import view.XListView.IXListViewListener;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;


import com.bwei.month_two.adapter.MyAdapter;
import com.bwei.month_two.entity.Tweet;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;


public class MainActivity extends Activity implements IXListViewListener{
private List<Tweet> tlist ;
List<Tweet> list=new ArrayList<Tweet>();
private XListView xListView;
    int i=1;
    private MyAdapter adapter;
   
private Handler handler;
    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

handler = new Handler();
xListView = (XListView) findViewById(R.id.xlistview);
xListView.setPullLoadEnable(true);
xListView.setPullRefreshEnable(true);
xListView.setXListViewListener(this);

//请求网络数据
getData("刷新");
xListView.setOnItemClickListener(new OnItemClickListener() {


@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
Intent it=new Intent(MainActivity.this,ShowActivity.class);
it.putExtra("id", list.get(position-1).id);
startActivity(it);
}
});

}


private void getData(String s) {
// TODO Auto-generated method stub

//String path="http://www.oschina.net/action/api/tweet_list?uid=0&pageIndex="+i+"&pageSize=20";
String path ="http://www.oschina.net/action/api/tweet_list?pageSize=20&pageIndex="
+ i;
System.out.println(i+"i---------");

//使用httputils
HttpUtils httpUtils=new HttpUtils();
httpUtils.send(HttpMethod.GET,path, new RequestCallBack<String>() {





@Override
public void onFailure(HttpException arg0, String arg1) {
// TODO Auto-generated method stub
System.out.println("请求失败");
}


@Override
public void onSuccess(ResponseInfo<String> arg0) {
// TODO Auto-generated method stub
String s=arg0.result;

System.out.println(s);

InputStream inputStream=new ByteArrayInputStream(s.getBytes());
//使用pull解析
try {
Tweet tweet=null;

XmlPullParserFactory factory=XmlPullParserFactory.newInstance();
   XmlPullParser parser=factory.newPullParser();
   parser.setInput(inputStream, "utf-8");
   int type=parser.getEventType();
   while (XmlPullParser.END_DOCUMENT!=parser.getEventType()) 
   {
switch (type) {
case XmlPullParser.START_DOCUMENT:
tlist = new ArrayList<Tweet>();
break;
case XmlPullParser.START_TAG:
if("tweet".equals(parser.getName()))
{
tweet=new Tweet();
}
if(tweet!=null)
{
   if("id".equals(parser.getName()))
{
  tweet.id=Integer.parseInt(parser.nextText());
}
   else if("portrait".equals(parser.getName()))
   {
    tweet.portrait=parser.nextText();
   }
   else if("author".equals(parser.getName()))
   {
    tweet.author=parser.nextText();
   }
   else if("body".equals(parser.getName()))
   {
    tweet.body=parser.nextText();
   }
   else if("pubDate".equals(parser.getName()))
   {
    tweet.pubDate=parser.nextText();
   }
   else if("imgSmall".equals(parser.getName()))
   {
    tweet.imgSmall=parser.nextText();
   }
   else if("imgBig".equals(parser.getName()))
   {
    tweet.imgBig=parser.nextText();
   }
}

break;
case XmlPullParser.END_TAG:
if("tweet".equals(parser.getName()))
{
tlist.add(tweet);
}
break;


default:
break;
}
    type=parser.next();
   
   
   
}
   if(s.equals("刷新"))
   {
    list.clear();
    list.addAll(0, tlist);
   
   }
   else
   {
    list.addAll(tlist);
   }
   
   
   
  // hand.sendEmptyMessage(0x123);
 //  System.out.println(tlist.toString());
   isFirst();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void isFirst() {
if(adapter!=null){
adapter.notifyDataSetChanged();
}else{
adapter=new MyAdapter(MainActivity.this, list);
xListView.setAdapter(adapter);
}
}


});

}


@Override
public void onRefresh() {
// TODO Auto-generated method stub
i=1;

handler.postDelayed(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
 
//list.clear();
getData("刷新");
   close();
}
}, 2000);
}


@Override
public void onLoadMore() {


i=i+1;
// TODO Auto-generated method stub
handler.postDelayed(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub

System.out.println(i+"i");
getData("加载");
   close();
}
}, 2000);
}


public void close()
{
xListView.stopLoadMore();
xListView.stopRefresh();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值