2015-06-22 57 views
0

(對不起放太多的代碼,但如果我沒有,這將使事情難以解釋) 反正,我做了一個指令獲取從MySQL數據庫中的一些數據:AndroidPlot指令JSON任務後忽略

//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方法中,該圖顯示了一些變化,但點仍然沒有繪製出來。數組s1 []在通過JSon從數據庫獲取信息(所有int數)後都有數據。

回答

0

嘗試在完成修改圖後調用plot.redraw()

+0

這就是我需要的指示!非常感謝!該教程沒有它,我是一個初學者,所以我不知道我在找什麼。 – danny