Я использую библиотеку для круговой диаграммы в приложении для Android, используя данные сервера mysql. Я использовал библиотеку волейбола для извлечения данных с сервера.Android MPAndroidChart получение частичной круговой диаграммы: получение данных с сервера с использованием библиотеки волейбола
я смог получить JSON данных успешно:
com.example.bharat.plantnow D/ChartActivity﹕ Location Response: [{"treecondition":"Balanced","Count":"2"},{"treecondition":"Dieseased","Count":"1"},{"treecondition":"Healthy","Count":"4"},{"treecondition":"Imbalance","Count":"2"},{"treecondition":"Transplanted","Count":"1"}]
Но в круговой диаграмме, я получаю только последнее значение т.е. «Transplated» с графом «1», остальные не в состоянии отобразить. Помогите мне, где я ошибаюсь в КОДЕ.
private boolean addData(){
String tag_string_req = "req_location";
showDialog();
StringRequest strReq = new StringRequest(Request.Method.POST,
AppConfig.URL_PIECHART, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, "Location Response: " + response.toString());
hideDialog();
try {
JSONArray jTreeList = new JSONArray(response);
// boolean error = jObj.getBoolean("error");
// Check for error node in json
for (int i = 0; i < jTreeList.length(); i++) {
JSONObject location = jTreeList.getJSONObject(i);
String treecondition = location.getString("treecondition");
Integer count = location.getInt("Count");
ArrayList<Entry> yVals1 = new ArrayList<Entry>();
for (int j = 0; j < count; j++)
yVals1.add(new Entry((count), j));
ArrayList<String> xVals = new ArrayList<String>();
for(int j = 0; j < treecondition.length();j++)
xVals.add(treecondition);
//create pie data set
PieDataSet dataSet = new PieDataSet(yVals1,"First pie chart");
dataSet.setSliceSpace(3);
dataSet.setSelectionShift(5);
//add many colours
ArrayList<Integer> colors = new ArrayList<Integer>();
for (int c : ColorTemplate.VORDIPLOM_COLORS)
colors.add(c);
for (int c : ColorTemplate.JOYFUL_COLORS)
colors.add(c);
for (int c : ColorTemplate.COLORFUL_COLORS)
colors.add(c);
for (int c : ColorTemplate.LIBERTY_COLORS)
colors.add(c);
for (int c : ColorTemplate.PASTEL_COLORS)
colors.add(c);
colors.add(ColorTemplate.getHoloBlue());
dataSet.setColors(colors);
//instantiate pie data object now
PieData data = new PieData(xVals,dataSet);
data.setValueFormatter(new PercentFormatter());
data.setValueTextSize(11f);
data.setValueTextColor(Color.GRAY);
mChart.setData(data);
//undo all highlight
mChart.highlightValue(null);
//update pie chart
mChart.invalidate();
}
} catch (JSONException e) {
// JSON error
e.printStackTrace();
Toast.makeText(getApplicationContext(), "Json error: " + e.getMessage(), Toast.LENGTH_LONG).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Login Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_LONG).show();
hideDialog();
}
});
// Adding request to request queue
AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
return false;
}
Точно, что я хочу. Он работает только для одного фрагмента в моей последней итерации, но я хочу показать все из них. Положите меня. – Bharat
Можете ли вы показать изображение того, как выглядит диаграмма? –
Посмотрите на эту ссылку: https://drive.google.com/file/d/0B5oCnX38dLZ_S0lDeVdMU19IelE/view?usp=sharing – Bharat