package com.my.test2;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Xml;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.lidroid.xutils.BitmapUtils;
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;
import com.my.test2.bean.Tweet;
import com.my.test2.utils.NetUtils;
import com.my.test2.view.XListView;
import com.my.test2.view.XListView.IXListViewListener;
public class MainActivity extends Activity implements IXListViewListener{
private XmlPullParser parser;
private List<Tweet> list=null;
private XListView xlv;
private int count=0;
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list=new ArrayList<Tweet>();
xlv = (XListView) findViewById(R.id.xlv);
xlv.setPullLoadEnable(true);
xlv.setPullRefreshEnable(true);
getData(0);
xlv.setXListViewListener(this);
xlv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Intent intent=new Intent(MainActivity.this,DetailActivity.class);
intent.putExtra("id", list.get(position).id);
startActivity(intent);
}
});
}
private void getData(int pageIndex) {
HttpUtils http = new HttpUtils();
http.configCurrentHttpCacheExpiry(1000*5);
http.send(HttpMethod.GET, NetUtils.PATH_LIST+pageIndex, new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {}
@Override
public void onSuccess(ResponseInfo<String> arg0) {
String result=arg0.result;
parseXml(result);
adapter = new MyAdapter();
xlv.setAdapter(adapter);
}
});
}
private void parseXml(String result) {
try {
parser = Xml.newPullParser();
ByteArrayInputStream bais=new ByteArrayInputStream(result.getBytes("utf-8"));
parser.setInput(bais,"utf-8");
int eventType = parser.getEventType();
Tweet tweet=null;
while (eventType!=XmlPullParser.END_DOCUMENT) {
String name = parser.getName();
switch (eventType) {
case XmlPullParser.START_TAG:
if("tweet".equals(name)){
tweet=new Tweet();
}else if("id".equals(name)){
tweet.id=parser.nextText();
}else if("portrait".equals(name)){
tweet.portrait=parser.nextText();
}else if("author".equals(name)){
tweet.author=parser.nextText();
}else if("body".equals(name)){
tweet.body=parser.nextText();
}else if("imgSmall".equals(name)){
tweet.imgSmall=parser.nextText();
}else if("imgBig".equals(name)){
tweet.imgBig=parser.nextText();
}else if("pubDate".equals(name)){
tweet.pubDate=parser.nextText();
}
break;
case XmlPullParser.END_TAG:
if("tweet".equals(name)){
list.add(tweet);
}
break;
}
eventType=parser.next();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void onLoad(){
xlv.stopLoadMore();
xlv.stopRefresh();
xlv.setRefreshTime("ธีธี");
}
@Override
public void onRefresh() {
list.clear();
HttpUtils http = new HttpUtils();
http.configCurrentHttpCacheExpiry(1000*5);
http.send(HttpMethod.GET, NetUtils.PATH_LIST+0, new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {}
@Override
public void onSuccess(ResponseInfo<String> arg0) {
String result=arg0.result;
parseXml(result);
// adapter = new MyAdapter();
// xlv.setAdapter(adapter);
adapter.notifyDataSetChanged();
onLoad();
count=0;
}
});
}
@Override
public void onLoadMore() {
HttpUtils http = new HttpUtils();
http.configCurrentHttpCacheExpiry(1000*5);
http.send(HttpMethod.GET, NetUtils.PATH_LIST+(++count), new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {}
@Override
public void onSuccess(ResponseInfo<String> arg0) {
String result=arg0.result;
parseXml(result);
adapter.notifyDataSetChanged();
onLoad();
}
});
}
private class MyAdapter extends BaseAdapter{
public MyAdapter() {
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder=null;
if(convertView==null){
holder=new ViewHolder();
convertView=View.inflate(MainActivity.this, R.layout.xlv_item, null);
holder.item_portrait=(ImageView) convertView.findViewById(R.id.item_portrait);
holder.item_author=(TextView) convertView.findViewById(R.id.item_author);
holder.item_title=(TextView) convertView.findViewById(R.id.item_title);
holder.item_img=(ImageView) convertView.findViewById(R.id.item_img);
convertView.setTag(holder);
}else{
holder= (ViewHolder) convertView.getTag();
}
BitmapUtils utils = new BitmapUtils(MainActivity.this);
utils.display(holder.item_portrait, list.get(position).portrait);
holder.item_author.setText(list.get(position).author+"");
holder.item_title.setText(list.get(position).body+"");
if(list.get(position).imgSmall!=null){
holder.item_img.setVisibility(View.VISIBLE);
utils.display(holder.item_img, list.get(position).imgSmall);
}else{
holder.item_img.setVisibility(View.GONE);
}
return convertView;
}
}
static class ViewHolder{
private ImageView item_portrait;
private TextView item_title;
private TextView item_author;
private ImageView item_img;
}
}
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Xml;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.lidroid.xutils.BitmapUtils;
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;
import com.my.test2.bean.Tweet;
import com.my.test2.utils.NetUtils;
import com.my.test2.view.XListView;
import com.my.test2.view.XListView.IXListViewListener;
public class MainActivity extends Activity implements IXListViewListener{
private XmlPullParser parser;
private List<Tweet> list=null;
private XListView xlv;
private int count=0;
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list=new ArrayList<Tweet>();
xlv = (XListView) findViewById(R.id.xlv);
xlv.setPullLoadEnable(true);
xlv.setPullRefreshEnable(true);
getData(0);
xlv.setXListViewListener(this);
xlv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Intent intent=new Intent(MainActivity.this,DetailActivity.class);
intent.putExtra("id", list.get(position).id);
startActivity(intent);
}
});
}
private void getData(int pageIndex) {
HttpUtils http = new HttpUtils();
http.configCurrentHttpCacheExpiry(1000*5);
http.send(HttpMethod.GET, NetUtils.PATH_LIST+pageIndex, new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {}
@Override
public void onSuccess(ResponseInfo<String> arg0) {
String result=arg0.result;
parseXml(result);
adapter = new MyAdapter();
xlv.setAdapter(adapter);
}
});
}
private void parseXml(String result) {
try {
parser = Xml.newPullParser();
ByteArrayInputStream bais=new ByteArrayInputStream(result.getBytes("utf-8"));
parser.setInput(bais,"utf-8");
int eventType = parser.getEventType();
Tweet tweet=null;
while (eventType!=XmlPullParser.END_DOCUMENT) {
String name = parser.getName();
switch (eventType) {
case XmlPullParser.START_TAG:
if("tweet".equals(name)){
tweet=new Tweet();
}else if("id".equals(name)){
tweet.id=parser.nextText();
}else if("portrait".equals(name)){
tweet.portrait=parser.nextText();
}else if("author".equals(name)){
tweet.author=parser.nextText();
}else if("body".equals(name)){
tweet.body=parser.nextText();
}else if("imgSmall".equals(name)){
tweet.imgSmall=parser.nextText();
}else if("imgBig".equals(name)){
tweet.imgBig=parser.nextText();
}else if("pubDate".equals(name)){
tweet.pubDate=parser.nextText();
}
break;
case XmlPullParser.END_TAG:
if("tweet".equals(name)){
list.add(tweet);
}
break;
}
eventType=parser.next();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void onLoad(){
xlv.stopLoadMore();
xlv.stopRefresh();
xlv.setRefreshTime("ธีธี");
}
@Override
public void onRefresh() {
list.clear();
HttpUtils http = new HttpUtils();
http.configCurrentHttpCacheExpiry(1000*5);
http.send(HttpMethod.GET, NetUtils.PATH_LIST+0, new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {}
@Override
public void onSuccess(ResponseInfo<String> arg0) {
String result=arg0.result;
parseXml(result);
// adapter = new MyAdapter();
// xlv.setAdapter(adapter);
adapter.notifyDataSetChanged();
onLoad();
count=0;
}
});
}
@Override
public void onLoadMore() {
HttpUtils http = new HttpUtils();
http.configCurrentHttpCacheExpiry(1000*5);
http.send(HttpMethod.GET, NetUtils.PATH_LIST+(++count), new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {}
@Override
public void onSuccess(ResponseInfo<String> arg0) {
String result=arg0.result;
parseXml(result);
adapter.notifyDataSetChanged();
onLoad();
}
});
}
private class MyAdapter extends BaseAdapter{
public MyAdapter() {
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder=null;
if(convertView==null){
holder=new ViewHolder();
convertView=View.inflate(MainActivity.this, R.layout.xlv_item, null);
holder.item_portrait=(ImageView) convertView.findViewById(R.id.item_portrait);
holder.item_author=(TextView) convertView.findViewById(R.id.item_author);
holder.item_title=(TextView) convertView.findViewById(R.id.item_title);
holder.item_img=(ImageView) convertView.findViewById(R.id.item_img);
convertView.setTag(holder);
}else{
holder= (ViewHolder) convertView.getTag();
}
BitmapUtils utils = new BitmapUtils(MainActivity.this);
utils.display(holder.item_portrait, list.get(position).portrait);
holder.item_author.setText(list.get(position).author+"");
holder.item_title.setText(list.get(position).body+"");
if(list.get(position).imgSmall!=null){
holder.item_img.setVisibility(View.VISIBLE);
utils.display(holder.item_img, list.get(position).imgSmall);
}else{
holder.item_img.setVisibility(View.GONE);
}
return convertView;
}
}
static class ViewHolder{
private ImageView item_portrait;
private TextView item_title;
private TextView item_author;
private ImageView item_img;
}
}