更改数据后如何刷新chartView

时间:2018-07-25 08:45:08

标签: android

当前在使用AnyChart api生成饼图时遇到问题。我面临的问题是它能够在第一次生成饼图,但是在微调器上选择后,chartView变为空。我尝试使用调试模式从微调器中选择后检查进度,但是即使数据正确传递,它也可以成功运行。所以,我在想也许我需要做的只是刷新chartView。但是,我尝试过refreshDrawableState(),notfiy()和invalidate()仍然无法刷新chartView。

AnyChart资源:https://github.com/AnyChart/AnyChart-Android#pie-chart

第一次运行时

enter image description here

从微调框选择之后

enter image description here

这是我的编码

import React from 'react';
import Modal from 'react-modal';

const customStyles = {
  content : {
  }
};

Modal.setAppElement('#app')

export default class MealModal extends React.Component {
  constructor(props) {
    super(props);
  }


  render() {
    return (
      <Modal
        isOpen={this.props.modalIsOpen}
        onRequestClose={this.props.closeModal}
        style={customStyles}
        contentLabel="Meal Modal"
      >
        <div className="modal-wrapper">
          <div className="container text-center">
            <h1>Hello</h1>
            <h2>ID of this modal is {this.props.modalId}</h2>
            <h3>This is an awesome modal.</h3>
            <button onClick={this.props.closeModal}>close</button>
          </div>
        </div>
      </Modal>
    )
  }
}

2 个答案:

答案 0 :(得分:0)

尝试在 CREATE INDEX ON:MemberTopics(member_id) CREATE INDEX ON:MemberTopics(topic_id) CREATE INDEX ON:GroupTopics(topic_id) 之后在Pie对象上调用方法invalidate()

代码应如下所示:

setData(Data)

这对我有用。

答案 1 :(得分:0)

很长一段时间后,我对这个话题做出了回应,但是由于我遇到了同样的问题,终于找到了解决问题的办法。

您需要做的是在活动或片段类中创建一个私有Pie属性,如下所示:

lateinit var pie: Pie

然后在onCreateView或实例中(取决于您是在进行活动还是在片段中),将Pie属性设置为AnyChartView,如下所示:

pie = AnyChart.pie()
val anyChartView = root.findViewById(R.id.any_chart_view) as AnyChartView
anyChartView.setChart(pie)

然后在微调框onItemSelected中,您只需要像这样更新pie数据:

pie.data(data)

这将自动更新您的图表,您不需要在每次事件触发时都anyChartView.setChart(pie)这样做