HttpClient、XmlPullParser、ListView与BaseAdapter的综合用法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了HttpClient、XmlPullParser、ListView与BaseAdapter的综合用法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3237字,纯文字阅读大概需要5分钟。
内容图文
知识点总结
1、通过android API内置的类HttpClient从后台取出数据,HttpClient是一个接口,所以用他的子类来实例化DefaultHttpClient,具体的代码如下:
private List<News> getNewsFromInternet() {
HttpClient client = null;
try {
// 定义一个客户端
client = new DefaultHttpClient();
// 定义get方法
HttpGet get = new HttpGet("http://10.0.2.2:8080/NetEaseServer/new.xml");
// 执行请求
HttpResponse response = client.execute(get);
int statusCode = response.getStatusLine().getStatusCode();
if(statusCode == 200) {
InputStream is = response.getEntity().getContent();
List<News> newInfoList = getNewListFromInputStream(is);
return newInfoList;
} else {
Log.i(TAG, "访问失败: " + statusCode);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if(client != null) {
client.getConnectionManager().shutdown(); // 关闭和释放资源
}
}
return null;
}
3、XmlPullParser解析从后来发送过来的XML文件
private List<News> getNewListFromInputStream(InputStream is) throws Exception {
XmlPullParser parser = Xml.newPullParser(); // 创建一个pull解析器
parser.setInput(is, "utf-8"); // 指定解析流, 和编码
int eventType = parser.getEventType();
List<News> newInfoList = null;
News newInfo = null;
while(eventType != XmlPullParser.END_DOCUMENT) { // 如果没有到结尾处, 继续循环
String tagName = parser.getName(); // 节点名称
switch (eventType) {
case XmlPullParser.START_TAG: // <news>
if("news".equals(tagName)) {
newInfoList = new ArrayList<News>();
} else if("new".equals(tagName)) {
newInfo = new News();
} else if("title".equals(tagName)) {
newInfo.setTitle(parser.nextText());
} else if("detail".equals(tagName)) {
newInfo.setDetail(parser.nextText());
} else if("comment".equals(tagName)) {
newInfo.setComment(parser.nextText());
} else if("image".equals(tagName)) {
newInfo.setBitmap(parser.nextText());
}
break;
case XmlPullParser.END_TAG: // </news>
if("new".equals(tagName)) {
newInfoList.add(newInfo);
}
break;
default:
break;
}
eventType = parser.next(); // 取下一个事件类型
}
return newInfoList;
}
3、绑定到ListView这个控件需要设置setAdapter的属性,属先要定义一个类来实现BaseAdapter,主要来实现BaseAdapter的二个方法,具体代码如下:
class Myadapter extends BaseAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
return listnewsinfo.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
if(convertView == null) {
LayoutInflater inflater = getLayoutInflater();
view = inflater.inflate(R.layout.activity_item, null);
} else {
view = convertView;
}
// 重新赋值, 不会产生缓存对象中原有数据保留的现象
SmartImageView sivIcon = (SmartImageView) view.findViewById(R.id.iv_itemimg_icon);
TextView tvTitle = (TextView) view.findViewById(R.id.tv_item_tvtitle);
TextView tvDetail = (TextView) view.findViewById(R.id.tv_item_discuss);
TextView tvComment = (TextView) view.findViewById(R.id.tv_item_content);
News newInfo = listnewsinfo.get(position);
sivIcon.setImageUrl(newInfo.getBitmap()); // 设置图片
tvTitle.setText(newInfo.getTitle());
tvDetail.setText(newInfo.getDetail());
tvComment.setText(newInfo.getComment() + "跟帖");
return view;
}
}
原文:http://www.cnblogs.com/sunlovefang/p/4514885.html
内容总结
以上是互联网集市为您收集整理的HttpClient、XmlPullParser、ListView与BaseAdapter的综合用法全部内容,希望文章能够帮你解决HttpClient、XmlPullParser、ListView与BaseAdapter的综合用法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。