ITPub博客

首页 > 应用开发 > Java > wemall app商城源码Android 获取XML网络数据并绑定到ListView

wemall app商城源码Android 获取XML网络数据并绑定到ListView

Java 作者:wemallshop 时间:2016-11-29 10:52:39 0 删除 编辑

      wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改。本文分享Android 获取XML网络数据并绑定到ListView,对数据进行获取并显示代码信息,供技术员参考学习。

      1、添加ListView中每一项的item


点击(此处)折叠或打开

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:layout_width="fill_parent"
  3. android:layout_height="wrap_content"
  4. android:orientation="horizontal" >
  5. <TextView
  6.   android:id="@+id/record"
  7.   android:layout_width="230dp"
  8.   android:layout_height="wrap_content" />
  9. <TextView
  10.   android:id="@+id/name"
  11.   android:layout_width="wrap_content"
  12.   android:layout_height="wrap_content" />
  13. </LinearLayout>


       2、添加实体类NewsObj


点击(此处)折叠或打开

  1. public class NewsObj implements Serializable {
  2.   private String name;
  3.   private int id;
  4. }


       3、添加一个类用于处理请求消息

点击(此处)折叠或打开

  1. public class NewsService {
  2.     // 解析XML数据
  3.     private static List parseXML(InputStream ins) throws Exception {
  4.         List list = new ArrayList();
  5.         NewsObj obj = null;
  6.         XmlPullParser parser = Xml.newPullParser();
  7.         parser.setInput(ins, "UTF-8");
  8.         int event = parser.getEventType();
  9.         while (event != XmlPullParser.END_DOCUMENT) {
  10.             switch (event) {
  11.             case XmlPullParser.START_TAG:
  12.                 if ("news".equals(parser.getName())) {
  13.                     int id = new Integer(parser.getAttributeValue(0));
  14.                     obj = new NewsObj();
  15.                     obj.setId(id);
  16.                 } else if ("name".equals(parser.getName())) {
  17.                     obj.setName(parser.nextText());
  18.                 }
  19.                 break;
  20.             case XmlPullParser.END_TAG:
  21.                 if ("news".equals(parser.getName())) {
  22.                     list.add(obj);
  23.                     obj = null;
  24.                 }
  25.                 break;
  26.             }
  27.             event = parser.next();
  28.         }
  29.         return list;
  30.     }
  31.  
  32.     // 获取最新的资讯
  33.     public static List getLastnews(String Urlpath) throws Exception {
  34.         URL url = new URL(Urlpath);
  35.         HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  36.         conn.setConnectTimeout(5000);
  37.         conn.setRequestMethod("GET");
  38.         Log.i("CONN", conn.toString());
  39.         if (conn.getResponseCode() == 200) {
  40.             InputStream ins = conn.getInputStream();
  41.             return parseXML(ins);
  42.         }
  43.         return null;
  44.     }
  45. }

       4、修改MainActivity

点击(此处)折叠或打开

  1. public class MainActivity extends Activity {
  2.     private Handler handler;
  3.     private SimpleAdapter adapter;
  4.     private ListView lv;
  5.  
  6.     @Override
  7.     protected void onCreate(Bundle savedInstanceState) {
  8.         super.onCreate(savedInstanceState);
  9.         setContentView(R.layout.activity_main);
  10.         lv = (ListView) findViewById(R.id.lv);
  11.         handler = new Handler();
  12.         new Thread(runa).start();
  13.     }
  14.     
  15.     private Runnable setadapter = new Runnable() {
  16.         @Override
  17.         public void run() {
  18.             lv.setAdapter(adapter);
  19.         }
  20.     };
  21.  
  22.     private void SetView() {
  23.         try {
  24.             List videos = NewsService.getLastnews("http://10.0.2.2:4484/WebSite1/XMLFile.xml");
  25.             List<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
  26.             for (NewsObj news : videos) {
  27.                 HashMap<String, Object> item = new HashMap<String, Object>();
  28.                 item.put("id", news.getId());
  29.                 item.put("name", news.getName());
  30.                 data.add(item);
  31.             }
  32.             adapter = new SimpleAdapter(getApplicationContext(), data,
  33.                     R.layout.item, new String[] { "id", "name" }, new int[] { R.id.record, R.id.name });
  34.             handler.post(setadapter); // 添加一个任务到主线程的handler!!!
  35.         } catch (Exception e) {
  36.             e.printStackTrace();
  37.         }
  38.     }
  39.  
  40.     private Runnable runa = new Runnable() {
  41.         @Override
  42.         public void run() {
  43.             Looper.prepare();
  44.             SetView();
  45.         }
  46.     };
  47. }

       5、添加一个web测试项

       上一步中网站请求地址返回的数据如下

点击(此处)折叠或打开

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <videos>
  3.   <news id ="11">
  4.     <name>hello world</name>
  5.   </news>
  6.   <news id ="12">
  7.     <name>Livingstone</name>
  8.   </news>
  9. </videos>

       6、添加网络访问权限,运行程序

 

原文详情地址:http://Git.oschina.NET/zzunet/wemall-doraemon/commit/e8f303df5663dc69fe47bb9623222149d40e3956

wemall doraemonAndroid app商城详情地址:http://www.koahub.com/home/product/55

wemall官网地址:http://www.wemallshop.com

wemall 开源微商城 ,微信商城,商城源码,三级分销,微生鲜,微水果,微外卖,微订餐---专业的o2o系统

wemall

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31373291/viewspace-2129279/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2016-07-12

  • 博文量
    21
  • 访问量
    5380