xml解析数据并上拉加载下拉刷新
来源:互联网 发布:有哪些php程序 编辑:程序博客网 时间:2024/05/27 09:45
public class MainActivity extends Activity implements IXListViewListener {
private XListView xListview;
private ArrayList<OsChina> mylist = new ArrayList<OsChina>();
private int index = 0;
private boolean isRefresh = false;
private MyAdapter myAdapter;
private OsChina oschina;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
xListview = (XListView) findViewById(R.id.xListview);
xListview.setPullLoadEnable(true);
// xListview.setPullRefreshEnable(true);
xListview.setXListViewListener(this);
// 请求数据的方法
setData();
}
/**
* 请求数据的方法
*/
private void setData() {
String path = "http://www.oschina.net/action/api/tweet_list?uid=0&pageIndex="
+ index + "&pageSize=20";
HttpUtils http = new HttpUtils();
http.send(HttpMethod.GET, path, new RequestCallBack<String>() {
private List<OsChina> list;
@Override
public void onFailure(HttpException arg0, String arg1) {
Toast.makeText(MainActivity.this, "数据请求失败", 0).show();
}
@Override
public void onSuccess(ResponseInfo<String> responseInfo) {
String result = responseInfo.result;
byte[] bytes = result.getBytes();
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
// 解析xml的方法
list = pareXML(bais);
if (isRefresh) {
System.out.println("isRefresh=======" + isRefresh);
mylist.clear();
}
mylist.addAll(list);
if (myAdapter == null) {
myAdapter = new MyAdapter(MainActivity.this, mylist);
xListview.setAdapter(myAdapter);
xListview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long arg3) {
int id=list.get(position-1).id;
Intent intent=new Intent(MainActivity.this,DetailsActivity.class);
intent.putExtra("id", id);
startActivity(intent);
}
});
} else {
myAdapter.notifyDataSetChanged();
}
// 停止加载和刷新
onLoad();
}
});
}
/**
* 解析XML文件
*
* @param result
*/
private List<OsChina> pareXML(InputStream is) {
List<OsChina> osList = null;
oschina = null;
try {
// 得到一个解析器
XmlPullParser parser = Xml.newPullParser();
parser.setInput(is, "utf-8");
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
osList = new ArrayList<OsChina>();
break;
case XmlPullParser.START_TAG:
// 得到节点的名字
String name = parser.getName();
if ("tweet".equals(name)) {
oschina = new OsChina();
} else if ("id".equals(name)) {
oschina.setId(Integer.parseInt(parser.nextText()));
} else if ("portrait".equals(name)) {
oschina.setPortrait(parser.nextText());
} else if ("author".equals(name)) {
oschina.setAuthor(parser.nextText());
} else if ("imgSmall".equals(name)) {
oschina.setImgSmall(parser.nextText());
} else if ("imgBig".equals(name)) {
oschina.setImgBig(parser.nextText());
} else if ("body".equals(name)) {
oschina.setBody(parser.nextText());
}
break;
case XmlPullParser.END_TAG:
String name1 = parser.getName();
if ("tweet".equals(name1)) {
osList.add(oschina);
oschina = null;
}
break;
}
// 得到下一个事件的类型
eventType = parser.next();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return osList;
}
@Override
public void onRefresh() {
index = 0;
isRefresh = true;
}
@Override
public void onLoadMore() {
index++;
isRefresh = false;
// 重新请求数据
setData();
}
private void onLoad() {
xListview.stopRefresh();
xListview.stopLoadMore();
xListview.setRefreshTime("刚刚");
}
}
private XListView xListview;
private ArrayList<OsChina> mylist = new ArrayList<OsChina>();
private int index = 0;
private boolean isRefresh = false;
private MyAdapter myAdapter;
private OsChina oschina;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
xListview = (XListView) findViewById(R.id.xListview);
xListview.setPullLoadEnable(true);
// xListview.setPullRefreshEnable(true);
xListview.setXListViewListener(this);
// 请求数据的方法
setData();
}
/**
* 请求数据的方法
*/
private void setData() {
String path = "http://www.oschina.net/action/api/tweet_list?uid=0&pageIndex="
+ index + "&pageSize=20";
HttpUtils http = new HttpUtils();
http.send(HttpMethod.GET, path, new RequestCallBack<String>() {
private List<OsChina> list;
@Override
public void onFailure(HttpException arg0, String arg1) {
Toast.makeText(MainActivity.this, "数据请求失败", 0).show();
}
@Override
public void onSuccess(ResponseInfo<String> responseInfo) {
String result = responseInfo.result;
byte[] bytes = result.getBytes();
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
// 解析xml的方法
list = pareXML(bais);
if (isRefresh) {
System.out.println("isRefresh=======" + isRefresh);
mylist.clear();
}
mylist.addAll(list);
if (myAdapter == null) {
myAdapter = new MyAdapter(MainActivity.this, mylist);
xListview.setAdapter(myAdapter);
xListview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long arg3) {
int id=list.get(position-1).id;
Intent intent=new Intent(MainActivity.this,DetailsActivity.class);
intent.putExtra("id", id);
startActivity(intent);
}
});
} else {
myAdapter.notifyDataSetChanged();
}
// 停止加载和刷新
onLoad();
}
});
}
/**
* 解析XML文件
*
* @param result
*/
private List<OsChina> pareXML(InputStream is) {
List<OsChina> osList = null;
oschina = null;
try {
// 得到一个解析器
XmlPullParser parser = Xml.newPullParser();
parser.setInput(is, "utf-8");
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
osList = new ArrayList<OsChina>();
break;
case XmlPullParser.START_TAG:
// 得到节点的名字
String name = parser.getName();
if ("tweet".equals(name)) {
oschina = new OsChina();
} else if ("id".equals(name)) {
oschina.setId(Integer.parseInt(parser.nextText()));
} else if ("portrait".equals(name)) {
oschina.setPortrait(parser.nextText());
} else if ("author".equals(name)) {
oschina.setAuthor(parser.nextText());
} else if ("imgSmall".equals(name)) {
oschina.setImgSmall(parser.nextText());
} else if ("imgBig".equals(name)) {
oschina.setImgBig(parser.nextText());
} else if ("body".equals(name)) {
oschina.setBody(parser.nextText());
}
break;
case XmlPullParser.END_TAG:
String name1 = parser.getName();
if ("tweet".equals(name1)) {
osList.add(oschina);
oschina = null;
}
break;
}
// 得到下一个事件的类型
eventType = parser.next();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return osList;
}
@Override
public void onRefresh() {
index = 0;
isRefresh = true;
}
@Override
public void onLoadMore() {
index++;
isRefresh = false;
// 重新请求数据
setData();
}
private void onLoad() {
xListview.stopRefresh();
xListview.stopLoadMore();
xListview.setRefreshTime("刚刚");
}
}
0 0
- xml解析数据并上拉加载下拉刷新
- 解析XML上拉加载下拉刷新
- 下拉刷新+上拉加载+xml解析
- Pull解析XML,上拉刷新下拉加载
- 解析XML上拉加载与下拉刷新
- XML中pull解析上拉加载下拉刷新
- xml pull 解析 XlistView 上拉加载 下拉刷新
- //XML的pull解析 以及上拉加载下拉刷新
- Xml解析加下拉刷新上拉加载
- xListView(上拉刷新下拉加载,xml解析)中添加网络请求
- 上拉加载 下拉刷新
- 下拉刷新 * 上拉加载
- 上拉刷新 下拉加载
- 下拉刷新,上拉加载
- 上拉刷新下拉加载
- 下拉刷新,上拉加载
- 上拉刷新,下拉加载
- 上拉刷新下拉加载
- javaweb 写mysql数据库中文乱码
- 【Android】熟悉Android Studio以及其快捷键
- MES - 快速开工
- 过滤html恶意代码
- PXC添加新节点只需IST传输的方法
- xml解析数据并上拉加载下拉刷新
- 通用工具类
- 点九图CCScale9Sprite
- SpringMVC学习系列(8) 之 国际化
- 不能远程连接linux的mysql服务器
- Java集合详解系列----Java集合继承体系详解
- OpenCV_(1):Mat结构的应用
- 深入理解计算机系统笔记
- 下拉列表,输入时自动检索匹配项