Я новичок в Android Studio. Я пытаюсь построить гистограмму и линейную диаграмму, используя «метку времени», «прогноз» и двойные имена функций. Здесь данные находятся в predMap, и мне нужно показать в виде гистограммы с такими действиями, как ходьба, бег трусцой, еда, лежание, стояние, питье и количество. А для линейного графика с использованием временной отметки график зависимости времени от активности.
public class Results_Predict extends AppCompatActivity {
Intent intent = getIntent();
final LinkedHashMap<String, ArrayList> predictMap = ((Wrapper<LinkedHashMap<String,ArrayList>>) intent.getSerializableExtra("newMap")).get();
@Override
protected void onCreate(Bundle savedInstanceState) {
ArrayList<String> date = predictMap.get("TimeStamp"); //0
ArrayList<String> pred = predictMap.get("prediction"); //last one
ArrayList<String> feature_names = new ArrayList<String>(predictMap.keySet());
ArrayList<Double> feature_1 = predictMap.get(feature_names.get(1));
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_results_predict);
ListView lv = (ListView) findViewById(R.id.listView1);
ArrayList<BarData> list = new ArrayList<>();
for (int i = 0; i < 2; i++) {
list.add(generateData(i + 1));
}
ChartDataAdapter chartDataAdapter = new ChartDataAdapter(getApplicationContext(), list);
lv.setAdapter(chartDataAdapter);
}
private class ChartDataAdapter extends ArrayAdapter<BarData> {
public ChartDataAdapter(Context context, List<BarData> objects) {
super(context, 0, objects);
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
BarData data = getItem(position);
ChartDataAdapter.ViewHolder holder = null;
if (convertView == null) {
holder = new ChartDataAdapter.ViewHolder();
convertView = getLayoutInflater().from(getContext()).inflate(R.layout.list_item_barchart, null);
holder.chart = (BarChart) convertView.findViewById(R.id.chart);
convertView.setTag(holder);
} else {
holder = (ChartDataAdapter.ViewHolder) convertView.getTag();
}
data.setValueTextColor(Color.BLACK);
holder.chart.getDescription().setEnabled(false);
holder.chart.setDrawGridBackground(false);
XAxis XAxis = holder.chart.getXAxis();
XAxis.setPosition(com.github.mikephil.charting.components.XAxis.XAxisPosition.BOTTOM);
XAxis.setDrawGridLines(false);
YAxis leftAxis = holder.chart.getAxisLeft();
leftAxis.setLabelCount(5, false);
leftAxis.setSpaceTop(150);
YAxis rightAxis = holder.chart.getAxisRight();
rightAxis.setLabelCount(5, false);
rightAxis.setSpaceTop(15f);
holder.chart.setData(data);
holder.chart.setFitBars(true);
holder.chart.animateY(500);
return convertView;
}
private class ViewHolder {
BarChart chart;
}
}
private BarData generateData(int count) {
ArrayList<BarEntry> entries = new ArrayList<>();
for (int i = 0; i < 12; i++) {
entries.add(new BarEntry(i, (float)(Math.random()*70)+30));
}
BarDataSet dataSet = new BarDataSet(entries, "New Data Set" + count);
dataSet.setColors(ColorTemplate.MATERIAL_COLORS);
dataSet.setBarShadowColor(Color.rgb(203, 203, 203));
BarData data = new BarData(dataSet);
data.setBarWidth(2.9f);
return data;
}
}