fujianlian/KLineChart

向尾部添加数据时,尾部MA线形成一条竖线?

Closed this issue · 8 comments

image
向尾部添加数据时,调用如下代码

DataHelper.calculate(kLineEntities);
kLineChartAdapter.addFooterData(kLineEntities);
kLineChartAdapter.notifyDataSetChanged();
kLineChartView.refreshComplete();

出现上图尾部那样得情况,请问可能是哪一部分出现了问题呢?

kLineEntities只是新增的数据吗?如果是这样的话是会出现这种情况,因为计算kLineEntities第一个各种值时,之前的数据各种值没有,所以都是0

可以算是新增的数据,我是一个线程在不断的请求数据,然后进行添加。
那么这种情况该怎么处理呢? 看了一下源码还没有理清除,可以指点一下吗?
@fujianlian

直接把新增的数据加到原来的数据后面,然后刷新即可
kLineEntities1:原来数据
kLineEntities2:新增数据

kLineEntities1.addAll(kLineEntities2);// 或者 kLineEntities1.add(kLineEntities2);
DataHelper.calculate(kLineEntities1);
kLineChartAdapter.addHeaderData(kLineEntities1);
kChartView.invalidate();
kChartView.refreshEnd();

Thanks

直接把新增的数据加到原来的数据后面,然后刷新即可
kLineEntities1:原来数据
kLineEntities2:新增数据

kLineEntities1.addAll(kLineEntities2);// 或者 kLineEntities1.add(kLineEntities2);
DataHelper.calculate(kLineEntities1);
kLineChartAdapter.addHeaderData(kLineEntities1);
kChartView.invalidate();
kChartView.refreshEnd();

这种刷新数据的方式会造成全部数据的刷新,明明只要添加一条数据,并不需要所有数据都重新计算一遍.

直接把新增的数据加到原来的数据后面,然后刷新即可
kLineEntities1:原来数据
kLineEntities2:新增数据

kLineEntities1.addAll(kLineEntities2);// 或者 kLineEntities1.add(kLineEntities2);
DataHelper.calculate(kLineEntities1);
kLineChartAdapter.addHeaderData(kLineEntities1);
kChartView.invalidate();
kChartView.refreshEnd();

这种刷新数据的方式会造成全部数据的刷新,明明只要添加一条数据,并不需要所有数据都重新计算一遍.

你有好的解决方案了吗?

已找到解决方案,在每次添加数据的时候重新计算所有的数据,而不是计算demo中将要添加到尾部或者头部的数据,这样两段数据就连起来了,当然也可以计算之前数据的一部分和后面添加的数据,只要没有数据断就可以。

/**
 * 向头部添加数据
 */
public void addHeaderData(List<KLineEntity> data) {
    if (data != null && !data.isEmpty()) {
        datas.addAll(data);
        DataHelper.calculate(datas);
        notifyDataSetChanged();
    }
}

/**
 * 向尾部添加数据
 */
public void addFooterData(List<KLineEntity> data) {
    if (data != null && !data.isEmpty()) {
        datas.addAll(0, data);
        DataHelper.calculate(datas);
        notifyDataSetChanged();
    }
}

已找到解决方案,在每次添加数据的时候重新计算所有的数据,而不是计算demo中将要添加到尾部或者头部的数据,这样两段数据就连起来了,当然也可以计算之前数据的一部分和后面添加的数据,只要没有数据断就可以。

/**
 * 向头部添加数据
 */
public void addHeaderData(List<KLineEntity> data) {
    if (data != null && !data.isEmpty()) {
        datas.addAll(data);
        DataHelper.calculate(datas);
        notifyDataSetChanged();
    }
}

/**
 * 向尾部添加数据
 */
public void addFooterData(List<KLineEntity> data) {
    if (data != null && !data.isEmpty()) {
        datas.addAll(0, data);
        DataHelper.calculate(datas);
        notifyDataSetChanged();
    }
}

长按弹出标签时标签会出现问题怎么解决啊?