MpAndroidChart CandleStick Показывает диапазон с двойной панелью поиска?

Я использую двойную панель поиска для выбора минимального и максимального диапазона.

Это работает при уменьшении максимального диапазона, но при увеличении минимального диапазона это не работает.

Диапазон поиска OnRangeSekkbarChangedListener:

RangeSeekBar.OnRangeSeekBarChangeListener<Integer> skListener = new RangeSeekBar.OnRangeSeekBarChangeListener<Integer>() {

            @Override
            public void onRangeSeekBarValuesChanged(RangeSeekBar<?> bar, Integer minValue, Integer maxValue) {

                int max = bar.getSelectedMaxValue().intValue();
                int min = bar.getSelectedMinValue().intValue();

                mChart.resetTracking();

                //Hold of actual drawing lists
                List<CandleEntry> y = new ArrayList<CandleEntry>();
                List<String> x = new ArrayList<String>();

                for (int i = min; i < max ; i++){
                    //get candle entry from
                    CandleEntry current = yVals.get(i);
                    String currentDate = xVals.get(i);
                    y.add(current);
                    x.add(currentDate);
                }

                //Show less of the chart and invalidate
                CandleDataSet mSet = new CandleDataSet(y, "Price");
                mSet.setDecreasingColor(getResources().getColor(R.color.black));
                mSet.setIncreasingPaintStyle(Paint.Style.FILL);
                mSet.setIncreasingColor(getResources().getColor(R.color.accent));
                mSet.setDecreasingPaintStyle(Paint.Style.FILL);
                mSet.setShadowColor(getResources().getColor(R.color.black));

                mCandledata = new CandleData(x, mSet);
                //Don't show value text
                mCandledata.setDrawValues(false);

                mChart.setData(mCandledata);
                mChart.invalidate();
            }
        };

        rangeSeekBar.setOnRangeSeekBarChangeListener(skListener);

Скриншоты результатов:

Начальная нагрузка:

Исходная диаграмма

Максимальный диапазон приблизился к началу:

Максимальный диапазон, вытянутый ближе к началу

Минимальный диапазон приблизился к концу:

Минимальная полоса поиска приближается к концу


person stephen    schedule 28.06.2015    source источник


Ответы (1)


Вам нужно изменить xIndex записей свечи. Первая свеча должна иметь xIndex из 0

int xIndex = 0;
for (int i = min; i < max ; i++){
                    //get candle entry from
                    CandleEntry current = yVals.get(i);
                    String currentDate = xVals.get(i);
                    //set the xIndex value 
                    x.setXIndex(xIndex);
                    y.add(current);
                    x.add(currentDate);
                    xIndex++;
                }
person stephen    schedule 12.07.2015