0

JSONArray を TextView に解析する方法を教えてもらえますか? これまでのところ、解析するたびに、すべてではなく、最後の結果のみが表示されます。

これまでのところ、私は持っています:

            try {
            standby_position = json.getString("standby_position");
            zone_name = json.getString("zone_name");
            zone_no = json.getString("zone_no");
            status = json.getString("status");


            JSONArray standby_list = json.getJSONArray("standby_list");

            for (int i1 = 0; i1 < standby_list.length(); i1++) {
                JSONObject c = standby_list.getJSONObject(i1);


            DRIVER = c.getString(driver);
            SINCE = c.getString(since);
            WAITING = c.getString(waiting);
            GPS_DATA = c.getString(gps_data);



            }

        } catch (JSONException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

私はやろうとしていた:

 TextView information = (TextView) findViewById(R.id.information);
  information.setText ( DRIVER + SINCE + WAITING ); 

ここに私が解析しようとしているものがあります:

 {
"driver": "819",
"gps_data": "1",
"last_geocode": "",
"lastLatitudeUpdate": "12/31/1969 5:00:00 PM",
"standby_position": "1",
"zone_name": "STK",
"zone_no": "STK",
"status": "Your are checked-in and currently #1 STK. (as of: 7/19/2012 1:50:02 PM)",
"standby_list": [
    {
        "driver": "291",
        "since": "12:33:00 PM",
        "waiting": "77",
        "gps_data": "0"
    },
    {
        "driver": "103",
        "since": "12:49:21 PM",
        "waiting": "61",
        "gps_data": "0"
    },
    {
        "driver": "287",
        "since": "12:51:00 PM",
        "waiting": "59",
        "gps_data": "0"
    },
    {
        "driver": "271",
        "since": "1:22:00 PM",
        "waiting": "28",
        "gps_data": "0"
    },
    {
        "driver": "819",
        "since": "8:58:36 AM",
        "waiting": "292",
        "gps_data": "1"
    }
]
 }

これを行うと、最後の解析 Json のみが表示されます。何か案は?

4

3 に答える 3

0

最後のJSONとはどういう意味ですか?

「standby_list」と呼ばれるJSONArrayの最後のオブジェクトを参照していますか?

もしそうなら、それはあなたが最後のものだけを把握しているからです。代わりに、ある種のコレクションを使用して、その上でAddを呼び出す必要があります。

例えば

class MyObject {
    public String driver, since, waiting, gps;
}

List<MyObject> list = new ArrayList<MyObject>();

for (int i1 = 0; i1 < standby_list.length(); i1++) {
    JSONObject c = standby_list.getJSONObject(i1);
    MyObject myContainer = new MyObject();   

    myContainer.driver = c.getString(driver);
    myContainer.since = c.getString(since);
    myContainer.waiting = c.getString(waiting);
    myContainer.gps = c.getString(gps_data);
    list.add(myContainer);
}
于 2012-07-19T20:57:00.213 に答える
0

この変数は常に書き直します。そのため、常に最後のjsonしかありません

于 2012-07-19T20:55:21.597 に答える
0

ループで値を取得しますが、1 つのゾーンのみを調整しています。もちろん、表示されるのは最後のゾーンだけです。リストのすべての要素に対してテキスト ビューを使用するか、限られた時間だけ値を表示する必要がある場合は "Toast.makeText(...)" を使用してみてください。

于 2012-07-19T20:55:07.813 に答える