1. 程式人生 > >Android訪問網路:服務端返回XML或JSON格式資料,Android 進行解析並使用ListView顯示

Android訪問網路:服務端返回XML或JSON格式資料,Android 進行解析並使用ListView顯示

剛剛入門學習了Android的ListView,也是看了傳智播客黎活明老師的視訊學習了,但是一直執行不了,還報錯了。報的錯誤是:at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1......省略後面的了。。。。。後面上網查找了一下資料,原因是Android4.0以後訪問網路要在子執行緒裡執行;不能在主程式裡執行。查找了一下資料對這個例子進行了改進,下面連結的例子程式碼就是視訊裡面的差不多的程式碼:http://blog.csdn.net/lynxzong/article/details/12435451

下面的是我在這個例子上改過的程式碼,只是改動了MainActivity而已,其他的跟上面連結的程式碼一樣的。希望各位多多指導;有寫錯或者寫不好的地方求改正。。。

package com.example.videonews;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import com.example.domain.News;
import com.example.service.VideoNewsService;

import android.support.v7.app.ActionBarActivity;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {

	private Context context;
	private ListView listview;
	private ProgressDialog dialog;
	private SimpleAdapter adapter;
	private VideoNewsService videoNewsService;
	private List<News> videosList = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		context = MainActivity.this;
		
		/**初始化介面**/
		initView();
		
		/**載入基本的控制元件,並設定載入時候的滾動條**/
		dialog = new ProgressDialog(context);
		dialog.setMessage("正在載入資料...");
		dialog.setCancelable(false);
		dialog.show();
		Thread thread=new Thread(new loadListRunnable());
		thread.start();
		
	}

	

	/**
	 * *初始化介面
	 */
	private void initView() {
		listview=(ListView) findViewById(R.id.listview);
	}

	public class loadListRunnable implements Runnable {

		@Override
		public void run() {

			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			
			videoNewsService=new VideoNewsService();
			try {
				
				//videosList=videoNewsService.getLastNews();//讀取xml檔案
				videosList=videoNewsService.getJSONLastNews(); //讀取json
				Bundle bundle=new Bundle();
				if(null!=videosList && videosList.size()>0)
				{
					bundle.putString("result", "success");
					Message message=new Message();
					message.setData(bundle);
					handler.sendMessage(message);
				}
				else
				{
					bundle.putString("result", "fail");
				}
				
			} catch (Exception e) {
				e.printStackTrace();
			}
			
		}

	}
	
	/**
	 * 對返回的資料進行處理
	 */
	private Handler handler=new Handler(){
		
		public void handleMessage(Message msg)
		{
			String msStr=msg.getData().getString("result");
			if("success".equals(msStr))
			{
				//載入資料賦值
				initListView();
				//資料載入完成後結束進度條
				dialog.dismiss();
			}
			else{
				Toast.makeText(getApplicationContext(), "獲取資料失敗", 0).show();
			}
		}
	};

	protected void initListView() {

		List<HashMap<String, Object>> data=new ArrayList<HashMap<String,Object>>();
	    for(News news:videosList)
	    {
	    	HashMap<String, Object> item=new HashMap<String, Object>();
	    	item.put("id", news.getId());
	    	item.put("title", news.getTitle());
	    	item.put("timelength", getResources().getString(R.string.timelength)+
	    			news.getTimelength()+getResources().getString(R.string.fenzhong));
	    	data.add(item);		
	    }
		SimpleAdapter adapter=new SimpleAdapter(this, data, R.layout.items, 
				new String[]{"title","timelength"}, new int[]{R.id.title,R.id.timelength});
		
		listview.setAdapter(adapter);
	}
	
}

相關推薦

Android訪問網路服務返回XMLJSON格式資料Android 進行解析使用ListView顯示

剛剛入門學習了Android的ListView,也是看了傳智播客黎活明老師的視訊學習了,但是一直執行不了,還報錯了。報的錯誤是:at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.jav

Android訪問網路系列之--服務返回XMLJSON格式資料Android 進行解析顯示

例子說明:使用者通過訪問web資源的最新電影資訊,伺服器端生成XML或JSON格式資料,返回Android客戶端進行顯示。 此案例開發需要兩個方面 WEB開發和android開發. 一.web開發相對比較簡單,只是模擬一下 相關程式碼如下: 1.實體Bean package ygc.yxb.domain

SpringBoot RestController 同時支持返回xmljson格式數據

獲取json 需要 tid stc style pre cati 返回json provide @RestController 默認支持返回json格式數據,即使不做任何配置也能返回json數據 當接口需要支持xml或json兩種格式數據時應該怎麽做呢? 只要引入 Jack

SpringMVC返回XML或者JSON格式資料

SpringMVC的web.xml配置我就不說了… 首先需要加入json的jar包: jackson-mapper-asl-*.jar jackson-core-asl-*.jar 在applicationContext-servlet.xml檔案配置中

實現xmljson格式資料——單例模式的Db類(第二篇)

       上一篇只是實現了xml和json格式資料的類的封裝,不過它是沒有資料的來源的;因此,本篇文章是封裝一個呼叫資料庫資料的方法,視訊裡面用的是mysql_connect()等函式,不過現在用這些函式會出現notice,因為這些函式已經過時了,將來可能不會再用到;其實

安卓開發之解析XMLJSON格式資料

參考書作者:郭霖我會將所學的知識簡單記錄下來以便於大家快速查閱資料,另外郭霖大俠沒有提到的東西我也會作出補充我們通常情況下,每個需要訪問網路的應用程式都會有一個自己的伺服器,我們可以向伺服器提交資料,也可以從伺服器上獲取資料。在網路上傳輸資料時最常用的格式用兩種:XML和JS

python pymysql flask 簡易使用 和返回指定的json格式資料

pymysql.demo import pymysql import json #print(print.__doc__) conn = pymysql.connect(host="192.168.169.132", user="root"

移動Web開發資料壓縮壓縮傳輸的json格式資料

最近做了個移動web應用,java平臺做後臺,後臺查詢的資料結果用json格式傳輸,其中有個頁面,後臺返回的資料量很大,json字串達到了68K,這對於移動裝置的流量和響應速度來說,絕對是個悲劇。 1,未處理前的資料格式為: {[{"consDept":"A部門","con

springMVC返回複雜的json格式資料

一、springMVC返回json格式資料常用的寫法是使用@ResponseBody註解,在每一個方法前加上這個註解,springMVC的json解析機制會自動把返回值(Object型別的物件)轉換為json格式的資料,如果返回的json物件比較複雜,每一個方法

XMLJSON格式資料解析方法

    在網路上傳輸資料時最常用的格式有兩種:XML和JSON,下面就來學習如何解析XML和JSON格式的資料。一、解析XML格式資料XML格式內容如下:<apps>    <app>        <id>1</id>   

Java 通過httpClient Post方式提交xml服務返回資料

在通過http請求連線服務端程式時,有兩種方式httpClient這個不是標準的java庫,但是是開源專案,能夠快捷的開發,但如果做Android的開發,推薦使用httpUrlConnect這個工具。但是httpClient確實也是一個比較好用的工具。 這裡面

Android音訊實時傳輸與播放(二)服務

我偷懶就用java寫了個簡單的伺服器,大家明白原理就好。 服務端共開放兩個埠,一個udp上行埠用來接收amr音訊流,另一個tcp下行埠用來發送amr音訊流。 我這裡寫的服務端實現了組播的功能,即一個人在錄音,可以同時讓很多人同時聽到。 簡而言之,服務端做的唯一一件

QT網路程式設計服務和客戶程式設計

QtNetwork中的QTcpSocket和QTcpServer類可用來編寫基於TCP的client和server QTcpSocket提供client端的TCP功能,能夠發出TCP的請求至伺服器,其實它也是具有服務端傳送資料到客戶端的功能 QTcpServer則提供伺服器

windows網路共享訪問centos samba服務出現許可權問題不能訪問解決

1、ftp //If you want to share files anonymously <如果你想把這個共享給匿名的話,需要開啟以下> chcon -R -t public_content_t /var/ftp //If you want to setup a directory whe

網路程式設計服務處理多個客戶----多執行緒實現、建立執行緒特有資料.

重點集中在用多執行緒實現,建立執行緒特有資料,不會發生資料寫入衝突。實現的功能很簡單,客戶端連線成功後,輸入一個整數,服務端返回它的二進位制形式。客戶端輸入0,則主動退出。三個檔案: duoxianc.c ,主檔案binarykey.c,執行緒執行函式及特有資料建立clien

SQL學習筆記服務配置-如何讓外網訪問SQL2000

      剛剛寫了個DEMO,在內網來測試SQL2000後完全正常。現在想測試外網是否正常,畢竟路由器IP不固定,所以選擇了路由器+花生殼免費域名(koma.5166.info),所以先安裝花生殼客戶端軟體。下面是我在這過程中遇到的一些問題: 1、理論上將1433埠映射出

【實戰】Unity3d實戰之Unity3d網路遊戲實戰篇(6)服務框架的搭建

Unity3d實戰之Unity3d網路遊戲實戰篇(6):服務端框架的搭建 學習書籍《Unity3d網路遊戲實戰》 羅培羽著 機械工業出版社 本文是作者在學習過程中遇到的認為值得記錄的點,

Token服務身份驗證的流行方案

rst 服務 方案 app 過程 組件圖 wav hit margin 01- 身份認證 服務端提供資源給客戶端,但是某些資源是有條件的。所以服務端要能夠識別請求者的身份,然後再判斷所請求的資源是否可以給請求者。 token是一種身份驗證的機制,初始時用戶提交賬號數據

Linux通過口轉發來訪問內網服務(口轉發訪問阿裏雲Redis數據庫等服務)

creat 同方 eat sta -s span 不用 man conf # 安裝rinetd wget http://www.boutell.com/rinetd/http/rinetd.tar.gz&&tar -xvf rinetd.tar.gz&am

解決PHP服務返回json字符串有特殊字符的問題

解析 clas 要求 com 切換 trac bom break 必須 1. 問題描述 在調用PHP後臺接口發現後臺接口返回的json字符串Gson一直解析不通過: List<Region> districts = null; if (!Text