解析从服务器发送的数据,TextViews没有显示?

时间:2012-09-05 16:42:27

标签: android json parsing

我认为TextViews没有向我显示它从mySQL数据库中检索到的任何数据,这很奇怪。这是我的代码:

这是关键的解析位,我有两列需要解析并放入单独的TextView,我认为我已经做过了:

//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中的日志再次显示它未解析,或者至少在每行周围都有大括号和语音标记。

感谢您的帮助。真的很感激。

2 个答案:

答案 0 :(得分:0)

看起来您正在使用日志的getString方法解析JSON,但是将整个JSON填充到用于设置文本的字符串中。除非这些步骤之间存在某些不在此处的内容,否则我认为您需要做的是在追加到returnString和somethingElse时使用getString方法。

答案 1 :(得分:0)

您的onPostExecute方法是否被调用?签名错误,不能带两个参数。

您应该传递一个String数组(当然,更改您的AsyncTask类声明以使用onPostExecute中的String数组):

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

protected void onPostExecute(String[] strings) {
    String returnString = strings[0];
    String somethingelse = strings[1];
}