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.

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; 

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.

  • MPAndroidChart - Las primeras y últimas barras no se representan correctamente
  • Java.lang.RuntimeException: Paralleable encontró IOException escribiendo objeto serializable en Android que pasa el objeto ArrayList
  • MPandroidchart Doble YAxis con diferentes escalas
  • ¿Cómo obtener bar clic evento de gráficos horizontalbar de MPcharts en android?
  • Utilizar MPChartLibrary dentro de un fragmento
  • MPAndroidChart: eje x inferior y múltiples ejes-y
  • MPAndroidChart - Eliminar borde superior / eje desde v2
  • Cómo crear un BarChart con barras agrupadas con MPAndroidChart?
  • ¿Rellenar la escala Y específica con diverso color en carta de la línea usando la biblioteca de la carta del androide de MP?
  • ¿Cómo quitar la descripción del gráfico en MPAndroidChart?
  • MPAndroidChart BarChart xValues ​​Issue
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.