MPAndroid图表setValueFormatter函数所需信息

MPAndroid chart setValueFormatter function information required

    xl.setValueFormatter(new IAxisValueFormatter() {
            @Override
            public String getFormattedValue(float value, AxisBase axis) {
                if ((int)value != 0){
                final HashMap<Integer, String>numMap = new HashMap<>();

                    for (int i = 0; i < clxaxisArray.size(); i++) {

                        numMap.put(i, ""+clxaxisArray.get(clxaxisArray.size() - 1 - i));

                    }

                    Log.e("intvalue", ""+(value));
                    return "";
                }
                else
                {
                    return "";
                }
            }
            @Override
            public int getDecimalDigits() {
                return 0;
            }
        });
    }

getFormattedValue 函数中的值和轴是什么,这些值的用途是什么?出于教育目的,请描述任何人。

由自定义解决 class

public class MyXAxisValueFormatter implements IAxisValueFormatter {

    private List mValues;
    private List<?>  reverse_mValues;

    public MyXAxisValueFormatter(List values) {
        this.mValues = values;
        this.reverse_mValues =  values.subList(0, values.size());
        Collections.reverse(reverse_mValues);
    }

    @Override
    public String getFormattedValue(float value, AxisBase axis) {
        // "value" represents the position of the label on the axis (x or y)
        if((int) value < 0 || (int) value >= reverse_mValues.size()){
            return "";
        }else{
            return (String) reverse_mValues.get((int) value);
        }

    }

    /** this is only needed if numbers are returned, else return 0 */
    @Override
    public int getDecimalDigits() { return 0; }
}

显示图表功能中

XAxis xl = myChart.getXAxis();
        xl.setPosition(XAxis.XAxisPosition.BOTTOM);
        xl.setDrawAxisLine(true);
        xl.setDrawGridLines(false);
        xl.setGranularity(1f);
        xl.setDrawLabels(true);
        xl.setAvoidFirstLastClipping(false);
        xl.setAxisMaximum(mlxaxisArray.size());
        xl.setAxisMinimum(0);
        xl.setLabelCount(mlxaxisArray.size()+1);

        if (mlxaxisArray.size()!=0){

            xl.setValueFormatter(new MyXAxisValueFormatter(mlxaxisArray));
}

由于我的要求是倒序取值,所以上面使用了反函数class。反函数; Collections.reverse(reverse_mValues);