Xml解析、上拉、下拉
1、Activity加载数据
package com.bw.text1;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import android.app.Activity;
import android.os.Bundle;
import android.widget.GridView;
import com.bw.text1.MyUser.MyResult.MyData.MyItem;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnLastItemVisibleListener;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener;
import com.handmark.pulltorefresh.library.PullToRefreshGridView;
import com.thoughtworks.xstream.XStream;
public class MainActivity extends Activity {
private XStream stream;
private PullToRefreshGridView pgv;
private int index=0;
String uri="http://apis.juhe.cn/goodbook/query?key=9d6ef8c31647a206e05fcaff70527182&catalog_id=242&rn=20&dtype=xml&pn=";
private GridView gv;
private List<MyItem> item;
private MyBase base;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pgv=(PullToRefreshGridView) findViewById(R.id.lv);
item=new ArrayList<MyItem>();
pgv.setMode(Mode.PULL_FROM_START);
pgv.setOnLastItemVisibleListener(new OnLastItemVisibleListener() {
@Override
public void onLastItemVisible() {
index++;
Run();
}
});
pgv.setOnRefreshListener(new OnRefreshListener<GridView>() {
@Override
public void onRefresh(PullToRefreshBase<GridView> refreshView) {
index=0;
Run();
}
});
gv = pgv.getRefreshableView();
gv.setNumColumns(2);
Run();
}
private void Run() {
new Thread(){
public void run() {
SetHttp();
};
}.start();
}
private void SetHttp() {
HttpClient client=new DefaultHttpClient();
HttpPost post=new HttpPost(uri+index);
try {
HttpResponse execute = client.execute(post);
StatusLine statusLine = execute.getStatusLine();
if(statusLine.getStatusCode()==200){
HttpEntity entity = execute.getEntity();
String string = EntityUtils.toString(entity);
stream = new XStream();
stream.processAnnotations(MyUser.class);
final MyUser fromXML = (MyUser) stream.fromXML(string);
runOnUiThread(new Runnable() {
@Override
public void run() {
if(index==0){
item.clear();
item.addAll(fromXML.result.data.item);
base = new MyBase(MainActivity.this, item);
gv.setAdapter(base);
}else{
item.addAll(fromXML.result.data.item);
base.notifyDataSetChanged();
}
pgv.onRefreshComplete();
}
});
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
2、Xml Bean包
package com.bw.text1;
import java.util.ArrayList;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
@XStreamAlias("root")
public class MyUser {
public String resultcode;
public String reason;
public String error_code;
@XStreamAlias("result")
public MyResult result;
public class MyResult{
@XStreamAlias("data")
public MyData data;
public String totalNum;
public String pn;
public String rn;
public class MyData{
@XStreamImplicit(itemFieldName="item")
public ArrayList<MyItem> item;
public class MyItem{
public String title;
public String catalog;
public String tags;
public String sub1;
public String sub2;
public String img;
public String reading;
public String online;
public String bytime;
}
}
}
}
浙公网安备 33010602011771号