このセクションでは、FlexChart コントロールを Android アプリケーションに追加する方法、そこにデータを追加する方法について説明します。
このトピックは 3 つの手順で構成されます。
次の図は、上記の手順を実行した後の FlexChart を示しています。
FlexChart コントロールのデータソースとして機能する新しいクラス ChartPoint.cs を追加します。
FlexChartDatabase.cs |
コードのコピー
|
---|---|
public class ChartPoint : Java.Lang.Object { static Random random = new Random(); private const long serialVersionUID = 1L; private String name; private int sales; private int expenses; private int downloads; public string Name { get { return name; } set { name = value; } } public int Sales { get { return sales; } set { sales = value; } } public int Expenses { get { return expenses; } set { expenses = value; } } public int Downloads { get { return downloads; } set { downloads = value; } } public ChartPoint() { } public ChartPoint(String name, int sales, int expenses, int downloads) { this.Name = name; this.Sales = sales; this.Expenses = expenses; this.Downloads = downloads; } // ChartPoint型のランダムオブジェクトのリストを作成するメソッド public static IList<object> GetList() { List<object> list = new List<object>(); int n = 5; // 系列要素の数 String[] countries = { "アメリカ", "ドイツ", "イギリス", "日本", "インド", "ギリシャ", "イタリア", "カナダ" }; for (int i = 0; i < n; i++) { list.Add(new ChartPoint(countries[i], random.Next(20000), random.Next(20000), random.Next(20000))); } return list; } public static ObservableCollection<ChartPoint> getLogList() { ObservableCollection<ChartPoint> list = new ObservableCollection<ChartPoint>(); int n = 5; // 系列要素の数 String[] countries = { "アメリカ", "ドイツ", "イギリス", "日本", "インド", "ギリシャ", "イタリア", "カナダ" }; Random random = new Random(); for (int i = 0; i < n; i++) { int scale = random.Next(14); scale = (int)Math.Exp((double)scale); list.Add(new ChartPoint(countries[i], random.Next(scale), random.Next(scale), random.Next(scale))); } return list; } /** * 要素のサイズを固定したChartPoint型のランダムオブジェクトのリストを作成するメソッド; * * @param size * - 系列の要素のサイズ。 * */ public static IList<object> GetList(int size) { IList<object> list = new List<object>(); Random random = new Random(); for (int i = 0; i < size; i++) { list.Add(new ChartPoint(i + "", random.Next(20000), random.Next(20000), random.Next(20000))); } return list; } } |
FlexChart コントロールをレイアウトに追加するには、ソリューションエクスプローラからレイアウトフォルダー内に .axml ファイルを開き、そのコードを以下のコードで置き換えます。
XML |
コードのコピー
|
---|---|
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <C1.Android.Chart.FlexChart android:id="@+id/flexchart" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> |
FlexChart コントロールをツールボックス内のCustom controls タブからデザイナーモードでレイアウト表面にドラッグすることもできます。
レイアウトを初期化するには、Activity 内の OnCreate メソッドに次のコードを追加します。
C# |
コードのコピー
|
---|---|
public class GettingStartedActivity : Activity { private FlexChart mChart; protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.activity_getting_started); // ウィジェットを初期化する mChart = this.FindViewById<FlexChart>(Resource.Id.flexchart); // FlexChartのX軸のバインディングを設定する mChart.BindingX = "Name"; // 系列要素を初期化し、ChartPointの変数にバインドを設定する ChartSeries seriesSales = new ChartSeries(); seriesSales.Chart = mChart; mChart.LegendPosition = ChartPositionType.Top; seriesSales.SeriesName = "販売"; seriesSales.Binding = "Sales,Sales"; mChart.Series.Add(seriesSales); mChart.ItemsSource = ChartPoint.GetList(); } } |
[F5]キーを押してプロジェクトを実行します。