wemall-mobile是基於WeMall的android app商城,只須要在原商城目錄下上傳接口文件便可完成服務端的配置,客戶端可定製修改。本文分享Android 獲取XML網絡數據並綁定到ListView,對數據進行獲取並顯示代碼信息,供技術員參考學習。
一、添加ListView中每一項的itemandroid
<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>
二、添加實體類NewsObj
public class NewsObj implements Serializable { private String name; private int id; }// 省去屬性get和set方法
三、添加一個類用於處理請求消息
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; } }
四、修改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); // 添加一個任務到主線程的handler!!! } catch (Exception e) { e.printStackTrace(); } } private Runnable runa = new Runnable() { @Override public void run() { Looper.prepare(); SetView(); } }; }
五、添加一個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>
六、添加網絡訪問權限,運行程序
原文詳情地址:http://Git.oschina.NET/zzunet...
wemall doraemonAndroid app商城詳情地址:http://www.koahub.com/home/pr...
wemall官網地址:http://www.wemallshop.com
wemall 開源微商城 ,微信商城,商城源碼,三級分銷,微生鮮,微水果,微外賣,微訂餐---專業的o2o系統web