(对不起,放了太多代码,但是如果我没有写,那将使事情难以解释)
无论如何,我做了一条指令来从mysql数据库中获取一些数据:

//asynctask
private class JsonReadTask extends AsyncTask<String, Void, String> {
    @Override
    protected String doInBackground(String... params) {
        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();


        nameValuePairs.add(new BasicNameValuePair("fro", fr));
        nameValuePairs.add(new BasicNameValuePair("too",to));
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(params[0]);
        try {
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            jsonResult = inputStreamToString(
                    response.getEntity().getContent()).toString();
        }

        catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    private StringBuilder inputStreamToString(InputStream is) {
        String rLine = "";
        StringBuilder answer = new StringBuilder();
        BufferedReader rd = new BufferedReader(new InputStreamReader(is));

        try {
            while ((rLine = rd.readLine()) != null) {
                answer.append(rLine);
            }
        }

        catch (IOException e) {
            // e.printStackTrace();
            Toast.makeText(getApplicationContext(),
                    "Error..." + e.toString(), Toast.LENGTH_LONG).show();
        }
        return answer;
    }

    @Override
    protected void onPostExecute(String result) {

        try {
            JSONObject jsonResponse = new JSONObject(jsonResult);
            JSONArray jsonMainNode = jsonResponse.optJSONArray("energystatistic");

            for (int i = 0; i < jsonMainNode.length(); i++) {
                JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
                String kwh = jsonChildNode.optString("kwh");
                s1 = addElement(s1, Integer.parseInt(kwh));
            }

        } catch (JSONException e) {
            Toast.makeText(getApplicationContext(), "Error" + e.toString(), Toast.LENGTH_SHORT).show();
        }


        Toast.makeText(Plot.this, "Begin plot: " + String.valueOf(s1.length) + " Entries", Toast.LENGTH_SHORT).show();

        // Turn the above arrays into XYSeries':
        XYSeries series1 = new SimpleXYSeries(Arrays.asList(s1), SimpleXYSeries.ArrayFormat.Y_VALS_ONLY,"Series1");

        LineAndPointFormatter series1Format = new LineAndPointFormatter(Color.RED, Color.GREEN, Color.BLUE, null);
        // add a new series' to the xyplot:
        plot.addSeries(series1, series1Format);
        // reduce the number of range labels
        plot.setTicksPerRangeLabel(3);
        plot.getGraphWidget().setDomainLabelOrientation(-45);

        Toast.makeText(Plot.this, "Plotted", Toast.LENGTH_SHORT).show();

    }
}
// end async task


这里的问题是以下代码被忽略或其他原因:

// Turn the above arrays into XYSeries':
XYSeries series1 = new SimpleXYSeries(Arrays.asList(s1),SimpleXYSeries.ArrayFormat.Y_VALS_ONLY,"Series1");
LineAndPointFormatter series1Format = new LineAndPointFormatter(Color.RED, Color.GREEN, Color.BLUE, null);

// add a new series' to the xyplot:
plot.addSeries(series1, series1Format);

// reduce the number of range labels
plot.setTicksPerRangeLabel(3);
plot.getGraphWidget().setDomainLabelOrientation(-45);


我运行了一个调试器来检查那些行,程序会运行它们,但是该图似乎不受影响。该图保持空白,我不明白为什么。我需要使用其他方法来运行此程序吗?

如果我将其放在onCreate方法中,该图会显示一些更改,但这些点仍然根本不会绘制。通过JSon从数据库获取信息后,数组s1 []确实具有数据(所有int号)。

最佳答案

完成对图形的修改后,尝试调用plot.redraw()

07-26 00:38