Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
whyalwaysmea opened this issue Jan 7, 2019 · 8 comments
Closed

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

whyalwaysmea opened this issue Jan 7, 2019 · 8 comments

Comments

@whyalwaysmea
Copy link

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

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

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

@whyalwaysmea whyalwaysmea changed the title 向尾部添加数据时,最后时间点的MA线形成一条竖线? 向尾部添加数据时,尾部MA线形成一条竖线? Jan 7, 2019
@fujianlian
Copy link
Owner

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

@whyalwaysmea
Copy link
Author

whyalwaysmea commented Jan 7, 2019

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

@fujianlian
Copy link
Owner

fujianlian commented Jan 7, 2019

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

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

@whyalwaysmea
Copy link
Author

Thanks

@ganshenml
Copy link

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

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

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

@Qdafengzi
Copy link

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

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

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

你有好的解决方案了吗?

@Qdafengzi
Copy link

Qdafengzi commented Jan 7, 2020

已找到解决方案,在每次添加数据的时候重新计算所有的数据,而不是计算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
Copy link

已找到解决方案,在每次添加数据的时候重新计算所有的数据,而不是计算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();
    }
}

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants