numetriclabz / numAndroidCharts

A Powerful Android Charting Library by https://www.numetriclabz.com/
GNU General Public License v3.0
85 stars 37 forks source link

Null pointer exception is called in HeatMap.java:45 when the view is included from xml file. #3

Closed layogm closed 8 years ago

layogm commented 8 years ago

The problem comes because the columns list is null initially and it is being called in the view. I think this issue could be solved by simply initialising rows, columns and data fields with 0 size arraylists.

layogm commented 8 years ago

I initialised inside the fragment as:

<com.numetriclabz.numandroidcharts.HeatMap android:id="@+id/heatMap" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="12dp"/>

then java file : `

    heatMap = (HeatMap) root.findViewById(R.id.heatMap); 
    setHeatMap(); is being called after network operation

   private void setHeatMap() {

    List<ChartData> values = new ArrayList<ChartData>();
    values.add(new ChartData("One", "First", 10));
    values.add(new ChartData("One", "Sec", 11));
    values.add(new ChartData("One", "Third", 20));
    values.add(new ChartData("One", "Fourth", 30));
    values.add(new ChartData("Two", "First", 9));
    values.add(new ChartData("Two", "Sec", 14));
    values.add(new ChartData("Two", "Third", 20));
    values.add(new ChartData("Two", "Fourth", 23));
    values.add(new ChartData("Three", "First", 45));
    values.add(new ChartData("Three", "Sec", 23));
    values.add(new ChartData("Three", "Third", 43));
    values.add(new ChartData("Three", "Fourth", 5));
    values.add(new ChartData("Four", "First", 12));
    values.add(new ChartData("Four", "Sec", 32));
    values.add(new ChartData("Four", "Third", 10));
    values.add(new ChartData("Four", "Fourth", 8));

    JSONArray limits = new JSONArray();

    try {
        JSONObject limit1 = new JSONObject();
        limit1.put("minvalue", 0 + "");
        limit1.put("maxvalue", 10 + "");
        limit1.put("colorcode", "#C7E3EF");
        limit1.put("label", "Poor");

        JSONObject limit2 = new JSONObject();
        limit2.put("minvalue", 10 + "");
        limit2.put("maxvalue", 25 + "");
        limit2.put("colorcode", "#87C8EE");
        limit2.put("label", "Average");

        JSONObject limit3 = new JSONObject();
        limit3.put("minvalue", 25 + "");
        limit3.put("maxvalue", 50 + "");
        limit3.put("colorcode", "#4091C9");
        limit3.put("label", "Excellent");

        limits.put(limit1);
        limits.put(limit2);
        limits.put(limit3);
    }
    catch (Exception e){
        e.printStackTrace();
    }

    heatMap.setLimits(limits);

    List<ChartData> columns = new ArrayList();
    columns.add(new ChartData("First"));
    columns.add(new ChartData("Sec"));
    columns.add(new ChartData("Third"));
    columns.add(new ChartData("Fourth"));

    List<ChartData> rows = new ArrayList();
    rows.add(new ChartData("One"));
    rows.add(new ChartData("Two"));
    rows.add(new ChartData("Three"));
    rows.add(new ChartData("Four"));

    heatMap.setColumns(columns);
    heatMap.setRows(rows);

    heatMap.setDataSet(values);

}

`

thadeubatista commented 8 years ago

this issue can be closed. it's already fixed