我正在使用Achartengine来创建折线图.我现在的月份显示,但上个月的第二行没有显示出来.这是lass和logcat:所以从logcat可以看出我的日期是正确的,上个月的计数也是正确的.那么为什么它没有显示超出我.

Log Cat:

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

类:

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,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;  
    }

}

哦,这是那些颜色:

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

解决方法

谢谢@Dan你带我到解决方案.我去了并记录了所有的点,以确保所有正确的值都放在正确的数组中,然后找出yArray.add(c.getInt(c.getColumnIndex(StatusData.KEY_CHARTING_TEMPERATURE)));不知何故被删除了.所以现在它有效!好极了!

android – Achartengine线图的更多相关文章

  1. android – Achartengine线图

    好极了!

  2. AChartEngine和Android Studio

    谢谢安德里亚解决方法我可以在我的AndroidStudio项目中使用此库,thistopic解释了如何将AChartEnginerepo添加到您的项目中.我做了什么:>在项目范围的build.gradle中添加了以下内容:>对于使用该库的每个模块,将其添加到其build.gradle:现在我可以在项目中使用该库,我在代码中看到类帮助弹出窗口并构建运行成功.

  3. 如何在android中设置achartengine折线图的背景图片?

    我正在使用achartengine来显示我的应用程序中的折线图.我需要为图表添加bg图像,但是当我在xml中设置bg图像时,它不起作用.有人试过吗?提前致谢.解决方法首先,您需要在活动中添加图表,并在活动布局中将首选图像设置为背景.其次,为图表和图表边距设置透明背景:最后,创建自己的透明背景,因为Color.TRANSPARENT不适用于图表边距:希望这可以帮助:)

  4. 在AchartEngine,android中,bar颜色对于0值是可见的

    我用AchartEngine来显示Barchart.在我的图表栏中,颜色也可见0值.我已经检查过如下..但它将所有值设置为透明.我想将条形颜色设置为大于0的值.更新:我提到你改变了我的代码,但得到这样的图表.我有一个月19日的价值,但它不可见.解决方法我已成功用MathHelper.NULL_VALUE替换0值.您可以找到该类here的文档.编辑:填写数据系列时,您可以尝试这样的事情:希望这会有所

  5. java – AChartEngine条形图中网格线上方的图表

    在AChartEngine条形图中,是否可以通过网格线绘制条形图?目前,网格线被绘制在条形图上,这使得它有点尴尬.示例图像附在下面.解决方法您无法更改先绘制哪个以及下一个绘制哪个.但是,您可以更改网格线的颜色.例如,您可以设置一个有点透明的颜色,例如它看起来不像是在条形图上方绘制的.

随机推荐

  1. bluetooth-lowenergy – Altbeacon库无法在Android 5.0上运行

    昨天我在Nexus4上获得了Android5.0的更新,并且altbeacon库停止了检测信标.似乎在监视和测距时,didEnterRegion和didRangeBeaconsInRegion都没有被调用.即使RadiusNetworks的Locate应用程序现在表现不同,一旦检测到信标的值,它们就不再得到更新,并且通常看起来好像信标超出了范围.我注意到的一点是,现在在logcat中出现以下行“B

  2. android – react-native动态更改响应者

    我正在使用react-native进行Android开发.我有一个视图,如果用户长按,我想显示一个可以拖动的动画视图.我可以使用PanResponder实现这一点,它工作正常.但我想要做的是当用户长按时,用户应该能够继续相同的触摸/按下并拖动新显示的Animated.View.如果您熟悉Google云端硬盘应用,则它具有类似的功能.当用户长按列表中的任何项目时,它会显示可拖动的项目.用户可以直接拖

  3. android – 是否有可能通过使用与最初使用的证书不同的证书对其进行签名来发布更新的应用程序

    是否可以通过使用与最初使用的证书不同的证书进行签名来发布Android应用程序的更新?我知道当我们尝试将这样的构建上传到市场时,它通常会给出错误消息.但有没有任何出路,比如将其标记为主要版本,指定市场中的某个地方?解决方法不,你不能这样做.证书是一种工具,可确保您是首次上传应用程序的人.所以总是备份密钥库!

  4. 如何检测Android中是否存在麦克风?

    ..所以我想在让用户访问语音输入功能之前检测麦克风是否存在.如何检测设备上是否有麦克风.谢谢.解决方法AndroidAPI参考:hasSystemFeature

  5. Android – 调用GONE然后VISIBLE使视图显示在错误的位置

    我有两个视图,A和B,视图A在视图B上方.当我以编程方式将视图A设置为GONE时,它将消失,并且它正下方的视图将转到视图A的位置.但是,当我再次将相同的视图设置为VISIBLE时,它会在视图B上显示.我不希望这样.我希望视图B回到原来的位置,这是我认为会发生的事情.我怎样才能做到这一点?编辑–代码}这里是XML:解决方法您可以尝试将两个视图放在RelativeLayout中并相对于彼此设置它们的位置.

  6. android – 获得一首歌的流派

    我如何阅读与歌曲相关的流派?我可以读这首歌,但是如何抓住这首歌的流派,它存放在哪里?解决方法检查此代码:

  7. android – 使用textShadow折叠工具栏

    我有一个折叠工具栏的问题,在展开状态我想在文本下面有一个模糊的阴影,我使用这段代码:用:我可以更改textColor,它可以工作,但阴影不起作用.我为阴影尝试了很多不同的值.是否可以为折叠文本投射阴影?

  8. android – 重用arm共享库

    我已经建立了armarm共享库.我有兴趣重用一个函数.我想调用该函数并获得返回值.有可能做这样的事吗?我没有任何头文件.我试过这个Android.mk,我把libtest.so放在/jni和/libs/armeabi,/lib/armeabi中.此时我的cpp文件编译,但现在是什么?我从objdump知道它的名字编辑:我试图用这个android.mk从hello-jni示例中添加prebuild库:它工作,但libtest.so相同的代码显示以下错误(启动时)libtest.so存在于libhello-j

  9. android – 为NumberPicker捕获键盘’Done’

    我有一个AlertDialog只有一些文本,一个NumberPicker,一个OK和一个取消.(我知道,这个对话框还没有做它应该保留暂停和恢复状态的事情.)我想在软键盘或其他IME上执行“完成”操作来关闭对话框,就像按下了“OK”一样,因为只有一个小部件可以编辑.看起来处理IME“Done”的最佳方法通常是在TextView上使用setonEditorActionListener.但我没有任何Te

  10. android – 想要在调用WebChromeClient#onCreateWindow时知道目标URL

    当我点击一个带有target=“_blank”属性的超链接时,会调用WebChromeClient#onCreateWindow,但我找不到新的窗口将打开的新方法?主页url是我唯一能知道的东西?我想根据目标网址更改应用行为.任何帮助表示赞赏,谢谢!

返回
顶部