Как отобразить гистограмму и линейную диаграмму с использованием данных списка массивов - PullRequest
0 голосов
/ 28 мая 2020

Я новичок в 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;
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...