WEBサーバーから取得したJSONデータを複数表示 手順2

手順2、手順1の通信で取得した記事データをループ処理の中で1記事ごとに取り出す



package jp.example.hello;

import java.io.IOException;

import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONObject;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.util.Log;

public class HogehogeActivity extends Activity {

    private static final String LogTag = “HogehogeLog”;
    private ProgressDialog dialog;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.hogehoge);

        // jsonを取得して解析する
        LoadTask();
    }

    private String makeApiUrl(){
        return “http://akamako.com/blogger/sample.php”;
    }

    private void LoadTask(){
        // ProgressDialogを作成
        dialog = new ProgressDialog(this);
        dialog.setMessage(“Connect to Server.”);
        dialog.setCancelable(true);
        dialog.show();

        try{
            String apiUrl = makeApiUrl();

            // コンソールログに出力
            Log.d(LogTag+” apiUrl”,apiUrl);

            HttpGet get = new HttpGet(apiUrl);
            HttpClient DefaultHttpClient = new DefaultHttpClient();
            HttpResponse response = DefaultHttpClient.execute(get);

            // ステータスコード
            int status = response.getStatusLine().getStatusCode();
            Log.d(LogTag+” status”,String.valueOf(status));
            if (status != HttpStatus.SC_OK) {
                throw new Exception(“Error!”);
            }

            // 結果を取得
            String source =    EntityUtils.toString(response.getEntity());

            Log.d(LogTag+” source”,source);

            // JSONObject という型があるんだって
            JSONObject json = new JSONObject(source);

            // 記事データ
            JSONArray items = json.getJSONArray(“items”);

            // 記事の数
            String count = json.getString(“count”);

            if(count.equals(“0”) == true){
                // 記事データが無かったお
            }

            // items の中身の数
            int maxI = items.length();
            for(int i = 0; i < maxI; i++) {
                // 1つ取り出す
                JSONObject item = items.getJSONObject(i);
                // 表示項目を初期化
                String itemId = “”;
                String itemTitle=“”;
                String itemDetail=“”;
                String itemIconUrl=“”;
                String itemImageUrl=“”;
                if(item.has(“id”)) {
                    itemId = item.getString(“id”);
                }
                if(item.has(“title”)) {
                    itemTitle = item.getString(“title”);
                }
                if(item.has(“detail”)) {
                    itemDetail = item.getString(“detail”);
                }
                if(item.has(“icon”)) {
                    itemIconUrl = item.getString(“icon”);
                }
                if(item.has(“image”)) {
                    itemImageUrl = item.getString(“image”);
                }
                Log.d(LogTag + ” itemId”, itemId);
                Log.d(LogTag + ” itemTitle”, itemTitle);
                Log.d(LogTag + ” itemDetail”, itemDetail);
                Log.d(LogTag + ” itemIconUrl”, itemIconUrl);
                Log.d(LogTag + ” itemImageUrl”, itemImageUrl);
            }
            DefaultHttpClient.getConnectionManager().shutdown();
        }
        catch (ClientProtocolException e){
             Log.d(LogTag + ” ClientProtocolException”, e.getMessage());
        }
        catch (IOException e){
            Log.d(LogTag + ” IOException”, e.getMessage());
        }
        catch(Exception e){
            Log.d(LogTag + ” Exception”, e.getMessage());
        }
        if (dialog != null && dialog.isShowing()) {
            dialog.dismiss();
        }
    }
}

・動作確認

エミュレータを起動してHogehogeActivityに記述した Log.d(LogTag+” apiUrl”,apiUrl); がLogCat内に表示されるのを確認してください。

===========================

08-16 20:56:15.438: D/HogehogeLog apiUrl(732): http://akamako.com/blogger/sample.php

08-16 20:56:15.638: D/HogehogeLog status(732): 200

08-16 20:56:15.648: D/HogehogeLog source(732): {“count”:4,”items”:[{“id”:”1234″,”title”:”\u30bf\u30a4\u30c8\u30eb\u3068\u304b1234″,”detail”:”\u8a73\u7d30\u5185\u5bb9\u3068\u304b\u8a73\u7d30\u5185\u5bb9\u3068\u304b\u8a73\u7d30\u5185\u5bb9\u3068\u304b1234″,”icon”:”http:\/\/akamako.com\/blogger\/pict\/1.jpg”,”image”:”http:\/\/akamako.com\/blogger\/pict\/2.jpg”},{“id”:”1235″,”title”:”\u30bf\u30a4\u30c8\u30eb\u3068\u304b1235″,”detail”:”\u8a73\u7d30\u5185\u5bb9\u3068\u304b\u8a73\u7d30\u5185\u5bb9\u3068\u304b\u8a73\u7d30\u5185\u5bb9\u3068\u304b1235″,”icon”:”http:\/\/akamako.com\/blogger\/pict\/3.jpg”,”image”:”http:\/\/akamako.com\/blogger\/pict\/4.jpg”},{“id”:”1236″,”title”:”\u30bf\u30a4\u30c8\u30eb\u3068\u304b1236″,”detail”:”\u8a73\u7d30\u5185\u5bb9\u3068\u304b\u8a73\u7d30\u5185\u5bb9\u3068\u304b\u8a73\u7d30\u5185\u5bb9\u3068\u304b1236″,”icon”:”http:\/\/akamako.com\/blogger\/pict\/5.jpg”,”image”:”http:\/\/akamako.com\/blogger\/pict\/6.jpg”},{“id”:”1237″,”title”:”\u30bf\u30a4\u30c8\u30eb\u3068\u304b1237″,”detail”:”\u8a73\u7d30\u5185\u5bb9\u3068\u304b\u8a73\u7d30\u5185\u5bb9\u3068\u304b\u8a73\u7d30\u5185\u5bb9\u3068\u304b1237″,”icon”:”http:\/\/akamako.com\/blogger\/pict\/7.jpg”,”image”:”http:\/\/akamako.com\/blogger\/pict\/8.png”}]}

08-16 20:56:15.678: D/HogehogeLog itemId(732): 1234

08-16 20:56:15.678: D/HogehogeLog itemTitle(732): タイトルとか1234

08-16 20:56:15.678: D/HogehogeLog itemDetail(732): 詳細内容とか詳細内容とか詳細内容とか1234

08-16 20:56:15.678: D/HogehogeLog itemIconUrl(732): http://akamako.com/blogger/pict/1.jpg
08-16 20:56:15.678: D/HogehogeLog itemImageUrl(732): http://akamako.com/blogger/pict/2.jpg
08-16 20:56:15.688: D/HogehogeLog itemId(732): 1235
08-16 20:56:15.688: D/HogehogeLog itemTitle(732): タイトルとか1235
08-16 20:56:15.688: D/HogehogeLog itemDetail(732): 詳細内容とか詳細内容とか詳細内容とか1235
08-16 20:56:15.688: D/HogehogeLog itemIconUrl(732): http://akamako.com/blogger/pict/3.jpg
08-16 20:56:15.698: D/HogehogeLog itemImageUrl(732): http://akamako.com/blogger/pict/4.jpg
08-16 20:56:15.698: D/HogehogeLog itemId(732): 1236
08-16 20:56:15.698: D/HogehogeLog itemTitle(732): タイトルとか1236
08-16 20:56:15.698: D/HogehogeLog itemDetail(732): 詳細内容とか詳細内容とか詳細内容とか1236
08-16 20:56:15.698: D/HogehogeLog itemIconUrl(732): http://akamako.com/blogger/pict/5.jpg
08-16 20:56:15.698: D/HogehogeLog itemImageUrl(732): http://akamako.com/blogger/pict/6.jpg
08-16 20:56:15.698: D/HogehogeLog itemId(732): 1237
08-16 20:56:15.708: D/HogehogeLog itemTitle(732): タイトルとか1237
08-16 20:56:15.708: D/HogehogeLog itemDetail(732): 詳細内容とか詳細内容とか詳細内容とか1237
08-16 20:56:15.708: D/HogehogeLog itemIconUrl(732): http://akamako.com/blogger/pict/7.jpg
08-16 20:56:15.708: D/HogehogeLog itemImageUrl(732): http://akamako.com/blogger/pict/8.png

===========================


おぉーーーー!
WEBサーバーからjsonデータを取得してjava内の変数(オブジェクト)に代入できたってことじゃね!?

これらの表示データをAndroidの画面に出力(Viewにワタス?)できればよさそうだな。



Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です