これは私の問題です。私はAPIからダウンロードしているデータからグラフを描画しようとしています。データをダウンロードするために、私はOTTO
とRetrofit
ライブラリを使用します。私はMPAndroidChart
を使っています。 MagnitudeFrequencyChart
私はチャート上に作成するデータを準備しています。 onServerEvent
にダウンロードしたデータをコンストラクタに実装してグラフメソッドを作成するとき、私のチャートにはデータがありません。 OnCreateView
メソッドの外側にbarChartを作成することはできますか?または、ダウンロードしたデータをOnCreateView
に実装するにはどうすればよいですか?私はチャートを作成していダウンロードしたデータから図面を取得
public class GraphFragment extends Fragment {
private View view;
private BarChart barChart;
private Bus bus = BusProvider.getInstance();
private MagnitudeFrequencyChart magnitudeFrequencyChart;
private List<Feature> features;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_graph, container, false);
barChart = (BarChart) view.findViewById(R.id.barChart_magnitudeFrequency);
return view;
}
@Subscribe
public void onServerEvent(ServerEvent serverEvent) {
features = serverEvent.getDataResponse().getFeatures();
magnitudeFrequencyChart = new MagnitudeFrequencyChart(features, barChart);
magnitudeFrequencyChart.getMagnitudeFrequencyChart();
}
@Subscribe
public void onErrorEvent(ErrorEvent errorEvent) {
Toast.makeText(getActivity(), "" + errorEvent.getErrorMsg(), Toast.LENGTH_SHORT).show();
}
@Override
public void onResume() {
super.onResume();
bus.register(this);
}
@Override
public void onPause() {
super.onPause();
bus.unregister(this);
}
}
クラス:
public class MagnitudeFrequencyChart {
private List<Feature> features;
private BarChart barChart;
public MagnitudeFrequencyChart(List<Feature> features, BarChart barChart) {
this.features = features;
this.barChart = barChart;
}
public void getMagnitudeFrequencyChart() {
int mag3 = 0;
int mag4 = 0;
int mag5 = 0;
int mag6 = 0;
int mag7 = 0;
int mag8 = 0;
int mag9 = 0;
for (int i = 0; i < features.size(); i++) {
double magnitude = features.get(i).getProperties().getMag();
if (magnitude >= 3 && magnitude <= 3.99) {
mag3++;
} else if (magnitude >= 4 && magnitude <= 4.99) {
mag4++;
} else if (magnitude >= 5 && magnitude <= 5.99) {
mag5++;
} else if (magnitude >= 6 && magnitude <= 6.99) {
mag6++;
} else if (magnitude >= 7 && magnitude <= 7.99) {
mag7++;
} else if (magnitude >= 8 && magnitude <= 8.99) {
mag8++;
} else if (magnitude >= 9 && magnitude <= 9.99) {
mag9++;
}
}
ArrayList<BarEntry> yData = new ArrayList<>();
yData.add(new BarEntry(mag4, 0));
yData.add(new BarEntry(mag5, 1));
yData.add(new BarEntry(mag6, 2));
yData.add(new BarEntry(mag7, 3));
yData.add(new BarEntry(mag8, 4));
yData.add(new BarEntry(mag9, 5));
String xValues[] = {"4.0+", "5.0+", "6.0+", "7.0+", "8.0+", "9.0+"};
ArrayList<String> xData = new ArrayList<>();
for (int i = 0; i < xValues.length; i++) {
xData.add(xValues[i]);
}
BarDataSet barDataSet = new BarDataSet(yData, "Chart");
barDataSet.setColors(ColorTemplate.COLORFUL_COLORS);
BarData data = new BarData(xData, barDataSet);
barChart.setData(data);
barChart.getAxisRight().setDrawLabels(false);
barChart.animateY(2000);
}
}
:
getMagnitudeFrequencyChart()
内側その後、? – Krish
私が先にダウンロードしたデータから棒グラフを作成したい – Dominik
参照リストをシングルトンクラスに保つことができます。 –
Krish