Цикл и возврат каждого элемента в отдельности - PullRequest
0 голосов
/ 01 ноября 2019

Я использую библиотеку MpAndroidChart и пытаюсь установить пользовательские метки, используя этот метод:

String[] daysOfTheWeek = {"M","T","W","T","F","S","S"};

XAxis xAxis = barChart.getXAxis();

xAxis.setValueFormatter(new ValueFormatter() { //Returns a string not a list :(
        @Override
        public String getFormattedValue(float value) {
            int position = 0;
            for(int i =0; i<daysOfTheWeek.length;i++){
                position = i;
            }
            return daysOfTheWeek[position];
        }
    });

Однако я получаю только последний элемент массива = S .

Как я могу вернуть все предметы по отдельности?

Ответы [ 5 ]

0 голосов
/ 08 ноября 2019

Этот трюк работает на 100% для меня, чтобы отображать дни недели с Мо до СУ

chartWeeklyDistance.getXAxis().setAxisMinimum(0);
  
   String[] daysOfTheWeek = {"MO", "TU", "WE", "TH", "FR", "SA", "SU"};
        xAxis.setValueFormatter(new ValueFormatter() {
            @Override
            public String getFormattedValue(float value) {
                if (((int) value) > -1 && ((int) value) < 7) {
                    return daysOfTheWeek[((int) value)];
                }
                return "";
            }
        });
0 голосов
/ 02 ноября 2019

Попробуй ..

XAxis xAxis = lineChart.getXAxis();

    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
    xAxis.setDrawGridLines(false);
    xAxis.setValueFormatter(new IndexAxisValueFormatter(getAreaCount));

    public ArrayList<String> getAreaCount() {

                ArrayList<String> label = new ArrayList<>();
                for (int i = 0; i < areaList.size(); i++)
                    label.add(areaList.get(i).getTopicName());
                return label;
            }
0 голосов
/ 01 ноября 2019

Глупый я, метод принимает float value. Я просто должен был использовать это!

xAxis.setValueFormatter(new ValueFormatter() {
    @Override
    public String getFormattedValue(float value) {
        return daysOfTheWeek[(int)value];
    }
});
0 голосов
/ 01 ноября 2019

Если вы хотите вернуть последний элемент массива, используйте это:

return daysOfTheWeek[daysOfTheWeek.length-1];

Если вы хотите получить элементы по отдельности, вы можете создать метод, который получает позицию элемента и возвращает этот элемент:

public String getItem(int position)
{
     return daysOfTheWeek[position];
}
0 голосов
/ 01 ноября 2019

используйте это

String[] daysOfTheWeek = {"M","T","W","T","F","S","S"};

XAxis xAxis = barChart.getXAxis();

int position = 0;
for(int i =0; i<daysOfTheWeek.length;i++){
       position = i;
       xAxis.setValueFormatter(new ValueFormatter() { //Returns a string not a list :(
           @Override
           public String getFormattedValue(float value) {
                return daysOfTheWeek[position];

           }

        }
})
...