如何在 Android 中将 MPCharts 的字符串转换为条形条目

lak*_*man 1 android graph mpandroidchart

在我的 Android 应用程序中,我对图表不熟悉,并且使用MPchart 库来绘制图表。我在 X 轴和 Y 轴上使用字符串数组显示图表。

对于 x 轴,我成功创建了它,但对于 Y 轴,我需要将其转换ArrayList<String>BarData数组列表。我不知道如何转换它。谁能告诉我如何实现这一目标?

对于 X 轴:

private ArrayList<String> getXAxis() {
            ArrayList<String> xAxis = new ArrayList<>();
            xAxis = new ArrayList<String>(Arrays.asList(bar_graph_names)); //converting string to arraylist
            return xAxis;
        }
Run Code Online (Sandbox Code Playgroud)

对于 Y 轴绘图值:

private ArrayList<BarDataSet> getData() {
        ArrayList<String> yAxis_conv = new ArrayList<>();
        yAxis_conv = new ArrayList<String>(Arrays.asList(bar_graph_values));

        ArrayList<BarDataSet> yAxis_Datasets=null;
        ArrayList<BarEntry> yAxis = new ArrayList<>();

        for(int i = 0; i < bar_graph_values.length; i++)
        {
            BarEntry [] barentry = new BarEntry[bar_graph_values.length];
            barentry[i] = new BarEntry(Float.valueOf(yAxis_conv.get(i)),i);
        }           

        BarDataSet barDataSet1 = new BarDataSet(yAxis_conv , "");//Error occurring line
        barDataSet1.setColors(ColorTemplate.COLORFUL_COLORS);
        yAxis_Datasets = new ArrayList<>();
        yAxis_Datasets.add(barDataSet1);
        return yAxis_Datasets;
    }
Run Code Online (Sandbox Code Playgroud)

InT*_*nds 5

BarData对象(您提供给图表的View)由一个List代表 x 值的对象和一个或多个BarDataSet代表 y 值数据的对象组成。BarDataSet对象具有String名称和Listy 值。

你这个对象的结构完全是错误的。(对于初学者来说yAxis_convList<String>需要BarDataSet的是List<BarEntry>)。还有更多错误,但我不会指出它们,只是在下面提供一些工作代码:

private void setData() {
    ArrayList<String> xVals = new ArrayList<String>();
    ArrayList<BarEntry> yVals = new ArrayList<BarEntry>();

    xVals = new ArrayList<String>(Arrays.asList(bar_graph_names));
    for(int i=0; i < bar_graph_values.length; i++) {
        BarEntry entry = new BarEntry(Float.valueOf(bar_graph_values[i]), i);
        yVals.add(entry);
    }
    BarDataSet newSet = new BarDataSet(yVals, "DataSet");
    BarData data = new BarData(xVals, newSet);
    mChart.setData(data);
}
Run Code Online (Sandbox Code Playgroud)