2013-08-07 15 views
8

Çizgi Grafik oluşturmak için Achartengine kullanıyorum. Şu anki ayım gösteriliyor ancak ikinci satır, geçen ay gösterilmiyor. İşte lass ve logcat: Eğer logcat'ten görebildiğiniz gibi, tarihlerim doğru ve bir önceki ayın sayısı. Öyleyse neden gösterilmiyor, benim dışımda.Achartengine Çizgi Grafik

Giriş Kedi:

08-07 16:13:43.969: I/PROJECTCARUSO(11734): DEBUG startdate: 2013-07-01 enddate: 2013-07-31 
08-07 16:13:43.969: I/PROJECTCARUSO(11734): count: 9 
08-07 16:13:43.979: I/PROJECTCARUSO(11734): DEBUG startdate: 2013-08-01 enddate: 2013-08-31 

Sınıf: Burada

public class TempHistoryFragment extends Fragment{ 
    private GraphicalView mChartView; 
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     if (container == null) { 
      return null; 
     } 
     Calendar cal = Calendar.getInstance(); 
     Calendar cal2 = Calendar.getInstance(); 
     SimpleDateFormat month_date = new SimpleDateFormat("MMMMMMMMM"); 
     SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd",Locale.US); 
     String month_name = month_date.format(cal.getTime()); 
     ArrayList<Integer> xArray = new ArrayList<Integer>(); 
     ArrayList<Integer> yArray = new ArrayList<Integer>(); 
     ArrayList<Integer> xArray2 = new ArrayList<Integer>(); 
     ArrayList<Integer> yArray2 = new ArrayList<Integer>(); 

     cal.add(Calendar.MONTH ,-1); 
     String prev_month_name = month_date.format(cal.getTime()); 


     int daysInMonth = cal.getActualMaximum(Calendar.DAY_OF_MONTH); 


     //***********************************************// 
     // Our first data Last MONTH 
     //***********************************************// 
     //start date for cursor 
     //cal.add(Calendar.MONTH, -1); 
     cal.set(Calendar.DATE, 1); 
     String startdate = df.format(cal.getTime()); 

     //end date 
     cal.set(Calendar.DATE, daysInMonth); 
     String enddate = df.format(cal.getTime()); 


     Log.i("PROJECTCARUSO","DEBUG startdate: " + startdate + " enddate: " + enddate); 
     Cursor c = getActivity().getContentResolver().query(StatusProvider.CONTENT_URI_CHARTING, null, "? < " + StatusData.KEY_CHARTING_DATE + " AND ? > " + StatusData.KEY_CHARTING_DATE , new String[] {startdate, enddate}, null); // 
     c.moveToFirst(); 
     Log.i("PROJECTCARUSO","count: " + c.getCount()); 
     if (c.getCount()>0 && c!=null) { 
      while (c.isAfterLast() == false) { 
       if ((isNumeric(c.getString(c.getColumnIndex(StatusData.KEY_CHARTING_TEMPERATURE))))) { 


       java.util.Date date = null; 
       int day = 0; 

       //get date from database 
       String datetest = c.getString(c.getColumnIndex(StatusData.KEY_CHARTING_DATE)); 


       //try to reformat to date. 
       try { 
        date = format.parse(datetest); 
        day = date.getDate(); 
       } catch (java.text.ParseException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

       xArray.add(day); 

       } 
      c.moveToNext(); 
      } 
     } 

     int[] x = new int[xArray.size()]; 
     for (int i = 0; i < xArray.size(); i++) { 
      x[i] = xArray.get(i); 
     } 

     int[] y = new int[yArray.size()]; 
     for (int i = 0; i < yArray.size(); i++) { 
      y[i] = yArray.get(i); 
     } 

     TimeSeries series = new TimeSeries(prev_month_name); 
     for(int i = 0; i < y.length; i++) 
     { 
      series.add(x[i], y[i]); 
     } 


     //***********************************************// 
     // Our second data THIS MONTH 
     //***********************************************// 
     //start date for cursor 
     cal2.set(Calendar.DATE, 1); 
     String startdate2 = df.format(cal2.getTime()); 

     //end date 
     cal2.set(Calendar.DATE, daysInMonth); 
     String enddate2 = df.format(cal2.getTime()); 


     Log.i("PROJECTCARUSO","DEBUG startdate: " + startdate2 + " enddate: " + enddate2); 
     Cursor c2 = getActivity().getContentResolver().query(StatusProvider.CONTENT_URI_CHARTING, null, "? < " + StatusData.KEY_CHARTING_DATE + " AND ? > " + StatusData.KEY_CHARTING_DATE , new String[] {startdate2, enddate2}, null); // 
     c2.moveToFirst(); 


     if (c2.getCount()>0 && c2!=null) { 
      while (c2.isAfterLast() == false) { 
       if (isNumeric(c2.getString(c2.getColumnIndex(StatusData.KEY_CHARTING_TEMPERATURE)))){ 

        yArray2.add(c2.getInt(c2.getColumnIndex(StatusData.KEY_CHARTING_TEMPERATURE))); 

        java.util.Date date = null; 
        int day = 0; 

        //get date from database 
        String datetest = c2.getString(c2.getColumnIndex(StatusData.KEY_CHARTING_DATE)); 


        //try to reformat to date. 
        try { 
         date = format.parse(datetest); 
         day = date.getDate(); 
        } catch (java.text.ParseException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 

        xArray2.add(day); 

       } 
      c2.moveToNext(); 
      } 
     } 


     int[] x2 = new int[xArray2.size()]; 
     for (int i = 0; i < xArray2.size(); i++) { 
      x2[i] = xArray2.get(i); 
     } 

     int[] y2 = new int[yArray2.size()]; 
     for (int i = 0; i < yArray2.size(); i++) { 
      y2[i] = yArray2.get(i); 
     } 

     TimeSeries series2 = new TimeSeries(month_name); 
     for(int i = 0; i < x2.length; i++) 
     { 
      series2.add(x2[i], y2[i]); 
     } 



     XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); 
     dataset.addSeries(series); 
     dataset.addSeries(series2); 

     XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer(); // Holds a collection of XYSeriesRenderer and customizes the graph 
     XYSeriesRenderer renderer = new XYSeriesRenderer(); // This will be used to customize line 1 
     XYSeriesRenderer renderer2 = new XYSeriesRenderer(); // This will be used to customize line 2 
     mRenderer.addSeriesRenderer(renderer); 
     mRenderer.addSeriesRenderer(renderer2); 

     // Customization time for line 1! 
     renderer.setColor(getResources().getColor(R.color.complementary)); 
     renderer.setPointStyle(PointStyle.SQUARE); 
     renderer.setFillPoints(true); 

     // Customization time for line 2! 
     renderer2.setColor(getResources().getColor(R.color.base)); 
     renderer2.setPointStyle(PointStyle.DIAMOND); 
     renderer2.setFillPoints(true); 

     mChartView = ChartFactory.getLineChartView(getActivity(), dataset, mRenderer); 

     //Set Chart Title and labels 
     mRenderer.setChartTitle("Temperature Tracking"); 
     mRenderer.setChartTitleTextSize(getResources().getDimension(R.dimen.largeText)); 
     mRenderer.setLabelsColor(getResources().getColor(R.color.primaryTextDark)); 

     //YAxis of Temp 
     mRenderer.setYTitle("Temperature", 0); 
     mRenderer.setYAxisMin(80, 0); 
     mRenderer.setYAxisMax(110, 0); 
     mRenderer.setYLabelsAlign(Align.CENTER); 
     mRenderer.setYLabelsColor(0, getResources().getColor(R.color.primaryTextDark)); 

     //XAxis of month 
     mRenderer.setXLabels(20); 
     mRenderer.setXTitle(month_name);   
     mRenderer.setXAxisMin(1); 
     mRenderer.setXAxisMax(daysInMonth); 
     mRenderer.setXLabelsColor(getResources().getColor(R.color.primaryTextDark)); 

     //Set the display 
     mRenderer.setMarginsColor(getResources().getColor(R.color.transparent)); 
     mRenderer.setShowCustomTextGrid(true); 
     mRenderer.setAxisTitleTextSize(getResources().getDimension(R.dimen.mediumText)); 
     mRenderer.setLabelsTextSize(getResources().getDimension(R.dimen.smallMediumText)); 
     mRenderer.setPanEnabled(false, false); 
     mRenderer.setClickEnabled(false); 
     mRenderer.setZoomEnabled(false, false); 


     return mChartView; 

    } 

    @SuppressWarnings("unused") 
    public static boolean isNumeric(String str) 
    { 
     try 
     { 
     double d = Double.parseDouble(str); 
     } 
     catch(NumberFormatException nfe) 
     { 
     return false; 
     } 
     return true; 
    } 

} 

Oh ve olan bu renkler:

<color name ="base">#51bbc2</color> 
    <color name ="complementary">#C25951</color> 

The result

+0

Ekran görüntüsü gönderin. Kodun 100'lerinden çok daha faydalı olacaktır. –

+0

Ekran görüntüsü eklendi ve sadece 248 satırı değil, o kadar da kötü değil;) – jcaruso

+1

yArray2 değerlerinin aralığı nedir? –

cevap

0

teşekkürler bana yol @Dan çözüm. Tüm doğru değerleri doğru diziye yerleştirildiğinden emin olmak için bütün noktaları kaydettim ve bir şekilde yArray.add(c.getInt(c.getColumnIndex(StatusData.KEY_CHARTING_TEMPERATURE))); bir şekilde silindi. Yani şimdi çalışıyor! Yuppi!

İlgili konular