2015-06-22 43 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