Android developmentAndroid tutorial

Android PhilJay MPAndroidChart Bar Chart Example with Server API

Hii Developer in this Android example we have implemented  Bar Chart, Bar graph In Android show data in Graph using  PhilJay MPAndroidChart. Android PhilJay MPAndroidChart Bar Chart Example with Server API to used a network API to get responses from the backend and show in graph chart.

Just follow these simple steps to make a dashboard with Chart.  Android PhilJay MPAndroidChart Bar Chart Example with Server API. Add these libraries in your project Gradle build.

implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'

Add Bar Chart Layout in you XML file where you want to add these Bar Chart.

<com.github.mikephil.charting.charts.BarChart
    android:id="@+id/severityBarChart"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="320dp"
    android:visibility="gone" />

User These Methods for initializeBarChart Pie chart. UI in your java class and add this method in OnCreate of activity.

private void initializeBarChart() {
    severityBarChart.getDescription().setEnabled(false);

    // if more than 60 entries are displayed in the chart, no values will be
    // drawn
    severityBarChart.setMaxVisibleValueCount(4);
    severityBarChart.getXAxis().setDrawGridLines(false);
    // scaling can now only be done on x- and y-axis separately
    severityBarChart.setPinchZoom(false);

    severityBarChart.setDrawBarShadow(false);
    severityBarChart.setDrawGridBackground(false);

    XAxis xAxis = severityBarChart.getXAxis();
    xAxis.setDrawGridLines(false);

    severityBarChart.getAxisLeft().setDrawGridLines(false);
    severityBarChart.getAxisRight().setDrawGridLines(false);
    severityBarChart.getAxisRight().setEnabled(false);
    severityBarChart.getAxisLeft().setEnabled(true);
    severityBarChart.getXAxis().setDrawGridLines(false);
    // add a nice and smooth animation
    severityBarChart.animateY(1500);


    severityBarChart.getLegend().setEnabled(false);

    severityBarChart.getAxisRight().setDrawLabels(false);
    severityBarChart.getAxisLeft().setDrawLabels(true);
    severityBarChart.setTouchEnabled(false);
    severityBarChart.setDoubleTapToZoomEnabled(false);
    severityBarChart.getXAxis().setEnabled(true);
    severityBarChart.getXAxis().setPosition(XAxisPosition.BOTTOM);
    severityBarChart.invalidate();

}

Android Get API response And add Your Array list value and label name used these Methods.

Get the API response array list and add you JSONArray in These Method.

protected void onPostSeveritylist(JSONArray result) {
    //this method will be running on UI thread
    ArrayList<DataObject> data = new ArrayList<>();
    data.equals(null);
    try {
        // Extract data from json and store into ArrayList as class objects
        for (int i = 0; i < result.length(); i++) {
            JSONObject json_data = result.getJSONObject(i);
            DataObject report = new DataObject();
            report.mText2 = json_data.getString("severityType");
            report.mText3 = json_data.getString("ticketCount");
            data.add(report);
            severityStringList.add("S"+report.mText2);
        }
        severityWiseGraph = data;
        createBarChart(severityWiseGraph);
        getTicketSourcePieChartData();
    } catch (JSONException e) {
    }
}

Add API response in your Bar chart and show value.

ArrayList<String> severityStringList = new ArrayList<>();
private void createBarChart(ArrayList<DataObject> severityListServer) {
    ArrayList<BarEntry> values = new ArrayList<>();

    for (int i = 0; i < severityListServer.size(); i++) {
        DataObject dataObject = severityListServer.get(i);
        values.add(new BarEntry(i, Float.parseFloat(dataObject.mText3)));
    }

    BarDataSet set1;

    if (severityBarChart.getData() != null &&
            severityBarChart.getData().getDataSetCount() > 0) {
        set1 = (BarDataSet) severityBarChart.getData().getDataSetByIndex(0);
        set1.setValues(values);
        severityBarChart.getData().notifyDataChanged();
        severityBarChart.notifyDataSetChanged();
    } else {
        set1 = new BarDataSet(values, "Data Set");
        set1.setColors(SessionManagement.MATERIAL_COLORS);
        set1.setDrawValues(true);

        ArrayList<IBarDataSet> dataSets = new ArrayList<>();
        dataSets.add(set1);

        BarData data = new BarData(dataSets);
        severityBarChart.setData(data);
        severityBarChart.setVisibleXRange(1,4);
        severityBarChart.setFitBars(true);
        XAxis xAxis = severityBarChart.getXAxis();
        xAxis.setGranularity(1f);
        xAxis.setGranularityEnabled(true);
        xAxis.setValueFormatter(new IndexAxisValueFormatter(severityStringList));//setting String values in Xaxis
        for (IDataSet set : severityBarChart.getData().getDataSets())
            set.setDrawValues(!set.isDrawValuesEnabled());

        severityBarChart.invalidate();
    }
}