1.4. Связь с данными
Реализовано три варианта передачи данных в диаграмму: через интерфейс DataProvider
, через механизм источников данных, или с использованием упрощённого API, позволяющего привязывать данные напрямую при помощи метода addData()
и удобных конструкторов класса MapDataItem
. Последний способ подходит для диаграмм, не привязанных к какому-либо источнику данных.
- DataProvider:
-
Интерфейс
DataProvider
имеет стандартную реализацию: классListDataProvider
. Он содержит список экземпляровDataItem
из которых будут браться данные для диаграммы. Существует несколько стандартных реализаций интерфейсаDataItem
:-
EntityDataItem
принимает экземпляр сущности. -
MapDataItem
содержит набор пар ключ-значение. -
SimpleDataItem
принимает экземпляр любогоpublic
класса.
Экземпляр
DataProvider
передается методуsetDataProvider()
конфигурации диаграммы. Данный способ предоставления данных для диаграммы наиболее универсален, однако требует создания экземпляровDataProvider
иDataItem
в коде контроллера экрана. -
- Datasource:
-
Источник данных типа
CollectionDatasource
устанавливается для компонентаChart
вызовом методаsetDatasource()
. Данный вариант требует наличия сущности, представляющей данные диаграммы. Он удобен, когда такая сущность уже есть в модели данных приложения, а также когда данные диаграммы нужно отобразить и в виде таблицы.В главе Пример работы с диаграммами проиллюстрированы все три способа получения данных.
Используемые для отображения свойства сущности или значения, содержащиеся в экземпляре
DataProvider
, задаются в атрибутах диаграммы, причем атрибуты различаются для разных типов диаграмм. Например для компонентаchart:pieChart
необходимо задать атрибутыvalueField
иtitleField
.В качестве значений могут выступать типыInteger
,Long
,Double
,String
,Boolean
,Date
.Динамическое добавление данных в существующий график поддерживается для обоих механизмов.
- Элемент chart:data:
-
Этот способ удобен для быстрого прототипирования диаграмм. Элемент
chart:data
и вложенные в него элементыitem
позволяют вручную указать фиксированные значения прямо в XML-дескрипторе диаграммы, например:<chart:pieChart id="pieChart" titleField="key" valueField="value"> <chart:data> <chart:item> <chart:property name="key" value="piece of apple pie"/> <chart:property name="value" value="70" type="int"/> </chart:item> <chart:item> <chart:property name="key" value="piece of blueberry pie"/> <chart:property name="value" value="20" type="int"/> </chart:item> <chart:item> <chart:property name="key" value="piece of cherry pie"/> <chart:property name="value" value="10" type="int"/> </chart:item> </chart:data> </chart:pieChart>