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();
}
}
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();
}
}