0

TextViews が mySQL データベースから取得したデータを表示しないのは非常に奇妙だと思います。これが私のコードです:

これは重要な解析ビットです。解析して別の TextView に入れる必要がある 2 つの列があります。

//PARSING JSON DATA
        try {
            jArray = new JSONArray(result);

            for (int i = 0; i < jArray.length(); i++) {

                JSONObject json_data = jArray.getJSONObject(i);

                Log.i("log_name", "Driver_full_name:" + json_data.getString("Driver_full_name"));
                Log.i("log_for", "Drives for:" + json_data.getString("Drives_for"));

                returnString += "\n\t" + jArray.getJSONObject(i);
                somethingelse += "\n\t" + jArray.getJSONObject(i);

            }

        } catch (JSONException e1) {
            Log.d("DB", "Error somewhere");
            CurrentSeasonDrivers_DriverName.this.runOnUiThread(new Runnable() {
                public void run() {
                    Toast.makeText(CurrentSeasonDrivers_DriversName, "Could not parse data so shut up",
                            Toast.LENGTH_LONG).show();
                }
            });
        }

        return returnString += somethingelse;
    }

    protected void onPostExecute(String returnString, String somethingelse) {

            TextView drivername = (TextView) findViewById(R.id.DriverName);
            drivername.setText(drivername.getText() + "\n" + returnString);

            TextView drivesfor = (TextView) findViewById(R.id.DrivesFor);
            drivesfor.setText(drivesfor.getText() + "\n" + somethingelse);

    }
}
}

誰かが助けてくれることを願っています。エラーがないことを考慮してください。解析ビットのログは完全に解析されたデータを示していますが、onPostExecute のログは再び解析されていないことを示しているか、少なくとも各行の周りに中括弧とスピーチ マークが付いています。

助けてくれてありがとう。心から感謝する。

4

2 に答える 2

0

ログのメソッドを使用して JSON を解析しているように見えますがgetString、テキストの設定に使用する文字列に JSON 全体を詰め込んでいます。getStringこれらのステップの間にここにない何かがない限り、returnString と somethingElse に追加するときにメソッドを使用する必要があると思います。

于 2012-09-05T16:46:49.833 に答える
0

あなたのonPostExecuteメソッドは呼び出されていますか?署名が間違っています。2 つのパラメーターを取ることはできません。

代わりに String 配列を渡す必要があります (もちろん、AsyncTaskクラス宣言を で String 配列を使用するように変更しますonPostExecute)。

    ...
    return new String[] {returnString, somethingelse};
}

protected void onPostExecute(String[] strings) {
    String returnString = strings[0];
    String somethingelse = strings[1];
}
于 2012-09-05T16:52:05.693 に答える