我的代码:
public BarData getBarData(String fieldName) {
ArrayList<BarEntry> entries = new ArrayList<>();
entries.add(new BarEntry(this.house.Population, 0));
entries.add(new BarEntry(this.currentStore.Population, 1));
ArrayList<String> labels = new ArrayList<String>();
labels.add("house");
labels.add("store" + this.currentStore.StoreName);
List<BarDataSet> dataSets = new ArrayList<>();
dataSets.add(new BarDataSet(entries, fieldName));
return new BarData(labels, dataSets);
}
根据该文档,BarData构造函数与上面的代码类似。但是为什么Android Studio总是告诉我有什么问题?
错误讯息:
Error:(97, 16) error: constructor BarData in class BarData cannot be applied to given types;
required: IBarDataSet[]
found: List<String>,List<BarDataSet>
reason: varargs mismatch; List<String> cannot be converted to IBarDataSet
请给我一些信息。我真的需要别人的帮助。
感谢。
答案 0 :(得分:9)
使用https://mvnrepository.com/artifact/org.apache.poi/ooxml-schemas/1.3的最新版本(3.0.0-beta1)?
此类的构造函数已更改:
public BarData(List<IBarDataSet> dataSets) {
super(dataSets);
}
MPAndroidChart删除了X轴标签。
查看This commit,因为它提供了一种使用库的新方法。
答案 1 :(得分:3)
使用新BarData(数据集)的Barchart的工作版本; 这是带有xml的代码。 你需要编辑工具:context = in xml。
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import com.github.mikephil.charting.charts.BarChart;
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
import com.github.mikephil.charting.interfaces.datasets.IBarDataSet;
import com.github.mikephil.charting.utils.ColorTemplate;
import java.util.ArrayList;
public class SubActivity_05 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub_05);
BarChart bchart = (BarChart) findViewById(R.id.chart1);
ArrayList<BarEntry> yVals1 = new ArrayList<BarEntry>();
for (int i = (int) 0; i < 10 + 1; i++) {
float val = (float) (Math.random());
yVals1.add(new BarEntry(i, val));
}
BarDataSet set1;
set1 = new BarDataSet(yVals1, "The year 2017");
set1.setColors(ColorTemplate.MATERIAL_COLORS);
ArrayList<IBarDataSet> dataSets = new ArrayList<IBarDataSet>();
dataSets.add(set1);
BarData data = new BarData(dataSets);
data.setValueTextSize(10f);
data.setBarWidth(0.9f);
bchart.setTouchEnabled(false);
bchart.setData(data);
}
XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.administrator.jjikmeok.SubActivity_05">
<com.github.mikephil.charting.charts.BarChart
android:id="@+id/chart1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</RelativeLayout>
查看教程页面很不错。 https://github.com/PhilJay/MPAndroidChart/wiki/Getting-Started
答案 2 :(得分:1)
对于版本3,您必须像这样使用
// the labels that should be drawn on the XAxis
final String[] quarters = new String[] { "Q1", "Q2", "Q3", "Q4" };
IAxisValueFormatter formatter = new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
return quarters[(int) value];
}
// we don't draw numbers, so no decimal digits needed
@Override
public int getDecimalDigits() { return 0; }
};
XAxis xAxis = mLineChart.getXAxis();
xAxis.setGranularity(1f); // minimum axis-step (interval) is 1
xAxis.setValueFormatter(formatter);
答案 3 :(得分:0)
因为您使用的是包含重大更改的最新版本。 将依赖版本替换为: 实现'com.github.PhilJay:MPAndroidChart:v2.2.4'