Obtener qué gráfico se selecciona en la actividad
Estoy usando la última versión de la biblioteca mpandroidchart. Tengo 2 gráficos de barras en una sola actividad. chart1 & chart2 son los id's en XML (no quiero usar barchart vista de lista). chart1 cosnist cuenta valor y chart2 consisten en dólares de valor. Estoy consiguiendo los valores ya. Pero quiero saber que es un valor en dólares o cuenta el valor. así que puedo exhibir la tostada según el gráfico seleccionado.
Este es mi código de ejemplo.
- Android-MPChartLibrary no se puede reemplazar por defecto "No hay datos de gráfico de texto disponibles"
- Cómo ocultar los valores del eje x en Barchart de mpandroidChart
- MPAndroidChart cómo establecer el color de la etiqueta?
- ¿Hay una manera de ocultar etiquetas de valor para cada barra en el gráfico de barras en MPAndroidChart?
- MPAndroidChart - ¿Cómo mostrar los valores y cuando su valor es cero?
public void onValueSelected(Entry e, int dataSetIndex, Highlight h) { View view; TextView text; switch (e.getXIndex()) { case 0: if (toast != null) toast.cancel(); toast = Toast.makeText(getActivity(), "All Other Year Defectors: " +e.getVal(), Toast.LENGTH_SHORT); view = toast.getView(); view.setBackgroundResource(R.color.all_odr_yr); toast.setGravity(Gravity.TOP, 0, 950); toast.show(); break; case 1: if (toast != null) toast.cancel(); toast = Toast.makeText(getActivity(), "Last Year Defectors: " + e.getVal(), Toast.LENGTH_SHORT); view = toast.getView(); view.setBackgroundResource(R.color.lst_yr_df); toast.setGravity(Gravity.TOP, 0, 950); toast.show(); break;
- MPAndroidChart - Las etiquetas de la leyenda están siendo cortadas
- Cómo modificar el ancho de la barra en MPAndroidChart BarChart?
- Gráfico de barras de MPAndroidChart cómo cambiar el color de cada etiqueta
- MP android gráfico que muestra los valores de flotador en el eje X de la barra horizontal Gráfico?
- Cómo configurar los colores en MPAndroidChart?
- Cómo ocultar valores dibujados en MPAndroidChart?
- El fondo de gráfico de sectores cambia cuando el segmento es demasiado pequeño en MPAndroidChart
- MPAndroidChart - ¿Cómo cambiar ValueFormatter mientras amplía?
Eso parece ser bastante difícil y difícil de lograr con la biblioteca solo.
Pero lo que usted podría hacer es en línea los oyentes y utilizar un oyente separado para cada carta, como esto:
countChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() { @Override public void onValueSelected(Entry e, int dataSetIndex, Highlight h) { // COUNT CHART VALUE SELECTED } @Override public void onNothingSelected() { } }); dollarChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() { @Override public void onValueSelected(Entry e, int dataSetIndex, Highlight h) { // DOLLAR CHART VALUE SELECTED } @Override public void onNothingSelected() { } });
De esta manera usted puede diferenciar entre las diferentes cartas.
Si no desea utilizar los oyentes en línea como Philip mencionó en su respuesta, puede crear una clase que implemente onChartValueSelectedListener
e identifique cada gráfico con un ID.
private class CustomOnValueSelectedListener implements OnChartValueSelectedListener { private int CHART_ID; public CustomOnValueSelectedListener() {} public CustomOnValueSelectedListener(int chart_id) { CHART_ID = chart_id; } @Override public void onValueSelected(Entry e, Highlight h) { switch (CHART_ID) { case PIE_CHART_ID: break; case BAR_CHART_ID: break; case LINE_CHART_ID: break; default: //common code break; } } @Override public void onNothingSelected() { } }
Ahora puede hacer esto –
pieChart.setOnChartValueSelectedListener(new CustomOnValueSelectedListener(PIE_ID)); barChart.setOnChartValueSelectedListener(new CustomOnValueSelectedListener(BAR_ID)); lineChart.setOnChartValueSelectedListener(new CustomOnValueSelectedListener(LINE_ID)); someOtherChart.setOnChartValueSelectedListener(new CustomValueSelectedListener());
donde PIE_ID
, LINE_ID
y BAR_ID
son algunos enteros únicos.
De esta manera su código es conciso en caso de que tenga más de 3-4 cartas para tratar con los oyentes en línea son mejores.