向尾部添加数据时,尾部MA线形成一条竖线?
Closed this issue · 8 comments
whyalwaysmea commented
fujianlian commented
kLineEntities只是新增的数据吗?如果是这样的话是会出现这种情况,因为计算kLineEntities第一个各种值时,之前的数据各种值没有,所以都是0
whyalwaysmea commented
可以算是新增的数据,我是一个线程在不断的请求数据,然后进行添加。
那么这种情况该怎么处理呢? 看了一下源码还没有理清除,可以指点一下吗?
@fujianlian
fujianlian commented
直接把新增的数据加到原来的数据后面,然后刷新即可
kLineEntities1:原来数据
kLineEntities2:新增数据
kLineEntities1.addAll(kLineEntities2);// 或者 kLineEntities1.add(kLineEntities2);
DataHelper.calculate(kLineEntities1);
kLineChartAdapter.addHeaderData(kLineEntities1);
kChartView.invalidate();
kChartView.refreshEnd();
whyalwaysmea commented
Thanks
ganshenml commented
直接把新增的数据加到原来的数据后面,然后刷新即可
kLineEntities1:原来数据
kLineEntities2:新增数据kLineEntities1.addAll(kLineEntities2);// 或者 kLineEntities1.add(kLineEntities2); DataHelper.calculate(kLineEntities1); kLineChartAdapter.addHeaderData(kLineEntities1); kChartView.invalidate(); kChartView.refreshEnd();
这种刷新数据的方式会造成全部数据的刷新,明明只要添加一条数据,并不需要所有数据都重新计算一遍.
Qdafengzi commented
直接把新增的数据加到原来的数据后面,然后刷新即可
kLineEntities1:原来数据
kLineEntities2:新增数据kLineEntities1.addAll(kLineEntities2);// 或者 kLineEntities1.add(kLineEntities2); DataHelper.calculate(kLineEntities1); kLineChartAdapter.addHeaderData(kLineEntities1); kChartView.invalidate(); kChartView.refreshEnd();这种刷新数据的方式会造成全部数据的刷新,明明只要添加一条数据,并不需要所有数据都重新计算一遍.
你有好的解决方案了吗?
Qdafengzi commented
已找到解决方案,在每次添加数据的时候重新计算所有的数据,而不是计算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();
}
}
282167361 commented
已找到解决方案,在每次添加数据的时候重新计算所有的数据,而不是计算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(); } }
长按弹出标签时标签会出现问题怎么解决啊?