Android 获取XML网络数据并绑定到ListView
2015-04-29 18:45
465 查看
下面这个例子讲述当ListView中显示的数据来自于网络的时候(比如新闻消息),对数据进行获取并显示
1、添加ListView中每一项的item
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/record"
android:layout_width="230dp"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
2、添加实体类NewsObj
public class NewsObj implements Serializable {
private static final long serialVersionUID = 4514356981704275456L;
private String name;
private int id;
}// 省去属性get和set方法
3、添加一个类用于处理请求消息
4、修改MainActivity
5、添加一个web测试项目
上一步中网站请求地址返回的数据如下
<?xml version="1.0" encoding="utf-8" ?>
<videos>
<news id ="11">
<name>hello world</name>
</news>
<news id ="12">
<name>Livingstone</name>
</news>
</videos>
6、添加网络访问权限,运行程序
来自:http://www.tuicool.com/articles/VNzA3eZ
1、添加ListView中每一项的item
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/record"
android:layout_width="230dp"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
2、添加实体类NewsObj
public class NewsObj implements Serializable {
private static final long serialVersionUID = 4514356981704275456L;
private String name;
private int id;
}// 省去属性get和set方法
3、添加一个类用于处理请求消息
public class NewsService { // 解析XML数据 private static List parseXML(InputStream ins) throws Exception { List list = new ArrayList(); NewsObj obj = null; XmlPullParser parser = Xml.newPullParser(); parser.setInput(ins, "UTF-8"); int event = parser.getEventType(); while (event != XmlPullParser.END_DOCUMENT) { switch (event) { case XmlPullParser.START_TAG: if ("news".equals(parser.getName())) { int id = new Integer(parser.getAttributeValue(0)); obj = new NewsObj(); obj.setId(id); } else if ("name".equals(parser.getName())) { obj.setName(parser.nextText()); } break; case XmlPullParser.END_TAG: if ("news".equals(parser.getName())) { list.add(obj); obj = null; } break; } event = parser.next(); } return list; } // 获取最新的资讯 public static List getLastnews(String Urlpath) throws Exception { URL url = new URL(Urlpath); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5000); conn.setRequestMethod("GET"); Log.i("CONN", conn.toString()); if (conn.getResponseCode() == 200) { InputStream ins = conn.getInputStream(); return parseXML(ins); } return null; } }
4、修改MainActivity
public class MainActivity extends Activity { private Handler handler; private SimpleAdapter adapter; private ListView lv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.lv); handler = new Handler(); new Thread(runa).start(); } private Runnable setadapter = new Runnable() { @Override public void run() { lv.setAdapter(adapter); } }; private void SetView() { try { List videos = NewsService.getLastnews("http://10.0.2.2:4484/WebSite1/XMLFile.xml"); List<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>(); for (NewsObj news : videos) { HashMap<String, Object> item = new HashMap<String, Object>(); item.put("id", news.getId()); item.put("name", news.getName()); data.add(item); } adapter = new SimpleAdapter(getApplicationContext(), data, R.layout.item, new String[] { "id", "name" }, new int[] { R.id.record, R.id.name }); handler.post(setadapter); } catch (Exception e) { e.printStackTrace(); } } private Runnable runa = new Runnable() { @Override public void run() { Looper.prepare(); SetView(); } }; }
5、添加一个web测试项目
上一步中网站请求地址返回的数据如下
<?xml version="1.0" encoding="utf-8" ?>
<videos>
<news id ="11">
<name>hello world</name>
</news>
<news id ="12">
<name>Livingstone</name>
</news>
</videos>
6、添加网络访问权限,运行程序
来自:http://www.tuicool.com/articles/VNzA3eZ
相关文章推荐
- wemall app商城源码Android 获取XML网络数据并绑定到ListView
- Android访问网络:服务端返回XML或JSON格式数据,Android 进行解析并使用ListView显示
- Android网络编程-----从服务器端获取xml数据并解析
- Android之ListView分页获取网路数据客户端实现(开启异步任务,获取网络数据)(三)
- android端获取网络数据添加到二级列表ExpandableListView
- [Android实例] Android ListView从网络获取图片及文字显示 + 自己搭建的服务器的xml文件
- Android 网络获取数据之XML解析
- Android中ListView数据绑定和获取内部控件
- Android获取网络XML/JSON数据
- 【android初级】之Android之从网络上获取数据(图片,网页,xml,json等)
- Android ListView 获取网络上的数据,动态地进行数据更新!
- Android开发17——获取网络资源之XML数据
- Android开发17——获取网络资源之XML数据
- android 从网络上获取数据(图片,网页,xml,json等)
- Android 获取并解析网络XML与数据上传
- Android开发17——获取网络资源之XML数据
- Android - 获取网络数据,Bitmap,ANR,主线程模型,消息机制,UserAgent,乱码问题,xml生成与解析,JSON解析,MVC,SmartImageView
- 从网络获取数据,并绑定到listview上
- 纪录片——Android中ListView网络数据获取
- WPF ListView点击删除某一行并获取绑定数据