Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 開發入門 >> 在 Android 應用程序中使用 Internet 數據(一)

在 Android 應用程序中使用 Internet 數據(一)

編輯:開發入門

Android 應用程序必須訪問位於 Internet 上的數據,而 Internet 數據可以有幾種不同的格式。本文將介紹在 android 應用程序中如何使用三種數據格式:

  • XML
  • JSON
  • Google 的 protocol buffers

首先開發一個 Web 服務,將 CSV 數據轉換成 XML、JSON 和 protocol-buffers 格式。然後構建一個樣例 android 應用程序,可以從 Web 服務中以任何一種格式提取數據並將其解析並顯示給用戶。

要進行本文中的練習,您需要最新的 android SDK(參見 參考資料)和 Android 2.2 平台。SDK 還要求您安裝一個 Java™ 開發包(JDK);本文中使用了 JDK 1.6.0_17。您不需要有 Android 物理設備;所有代碼都將在 SDK 的 Android 仿真器中運行。本文並沒有教您如何進行 Android 開發,因此建議您熟悉 android 編程。當然,只憑借 Java 編程語言的知識也可以完成本文的學習。

您還需要一個 Java web 應用程序服務器來運行 android 應用程序使用的 Web 服務。此外,也可以將服務器端代碼部署到 Google App Engine。參見 下載 部分獲得完整的源代碼。

Day Trader 應用程序

您將開發一個簡單的 android 應用程序,叫做 Day Trader。Day Trader 允許用戶輸入一個或更多的股票代碼並獲取其所代表股票的最新價格信息。用戶可以指定數據使用的格式:XML、JSON 或 protocol buffers。實際的 android 應用程序通常不會提供此選擇,但是通過實現此功能,您可以了解如何讓您的應用程序處理每一種格式。圖 1 展示了 Day Trader 用戶界面:


圖 1. 運行中的 Day Trader 應用程序
運行中的 Day Trader 應用程序屏幕截圖,帶有 AAPL、IBM、MSFT 和 GOOG 的股票報價 
 

文本框及其旁邊的 Add Stock 按鈕允許用戶輸入感興趣的每支股票的代碼。用戶按下 Download Stock Data 按鈕後,會從服務器請求所有這些股票的數據,在應用程序中解析並顯示在屏幕上。默認情況下,獲取的是 XML 數據。通過菜單,您可以在 XML、JSON 或 protocol buffers 數據格式間切換。

清單 1 顯示用於創建 圖 1 中所示 UI 的布局 XML:


清單 1. Day Trader 布局 XML

				
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout XMLns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <LinearLayout android:orientation="horizontal" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content">
        <EditText android:id="@+id/symbol" android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:width="120dip"/>
        <Button android:id="@+id/addBtn" android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:text="@string/addBtnLbl"/>
    </LinearLayout>
    <LinearLayout android:orientation="horizontal" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content">
        <TextView android:layout_width="wrap_content" 
            android:layout_height="wrap_content" android:id="@+id/symList" />
        <Button android:id="@+id/dlBtn" android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:text="@string/dlBtnLbl"
        />
       </LinearLayout>
    <ListVIEw android:id="@android:id/list" 
        android:layout_height="fill_parent" android:layout_width="fill_parent"
        android:layout_weight="1"
        />
</LinearLayout>

 

清單 1 中的大部分代碼都簡單明了。可以看到幾個小部件創建了 圖 1 所示的輸入和按鈕。還會看到一個 ListVIEw,android 小部件中真正的瑞士軍刀。此 ListVIEw 將用從服務器下載的股票數據填充。清單 2 顯示了控制該視圖的 Activity


清單 2. Day Trader 主活動

				
public class Main extends ListActivity {

    private int mode = XML; // default
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final EditText input = (EditText) findViewById(R.id.symbol);
        final TextView symbolsList = (TextView) findViewById(R.id.symList);
        final Button addButton = (Button) findViewById(R.id.addBtn);
        final Button dlButton = (Button) findViewById(R.id.dlBtn);
        addButton.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
                String newSymbol = input.getText().toString();
                if (symbolsList.getText() == null || 
                        symbolsList.getText().length() == 0){
                    symbolsList.setText(newSymbol);
                } else {
                    StringBuilder sb = 
                                  new StringBuilder(symbolsList.getText());
                    sb.append(",");
                    sb.append(newSymbol);
                    symbolsList.setText(sb.toString());
                }
                input.setText("");
            }
        });
        dlButton.setOnClickListener(new OnClickListener(){
            public void onClick(VIEw v) {
                String symList = symbolsList.getText().toString();
                String[] symbols = symList.split(",");
                symbolsList.setText("");
                switch (mode){
                case JSON :
                    new StockJSonParser().execute(symbols);
                    break;
                case PROTOBUF :
                    new StockProtoBufParser().execute(symbols);
                    break;
                default :
                    new StockXMLParser().execute(symbols);
                    break;
                }
            }
        });
    }
}

 

此 Activity 設置了 清單 1 中 XML 文件的布局,它將幾個事件處理程序連接起來。首先,對於 Add Stock 按鈕而言,代碼讀取文本框中的代碼並將其添加到 symList TextVIEw 中,用逗號分隔每個代碼。接下來,對於 Download 按鈕而言,處理程序從 symList TextVIEw 中讀取數據,然後 —基於 mode 變量— 使用三個不同的類之一從服務器下載數據。菜單設置 mode 變量的值;這個代碼不是很重要,因此我在 清單 2 中省略了它。在了解各種數據下載/解析類之前,我先為您展示一下服務器如何提供此數據。

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved