私はAndroidが新しく、カスタムチャートを作成して円グラフを表示しようとしています。私はJavaでOKですし、前にiOS/Swiftで円グラフのコードを書いています。Androidのカスタムビューにデータを渡す
私の問題は、期待通りにデータが渡されないか、またはデータが何らかの形でスーパークラスから設定される前にonDraw関数が呼び出されるということです。
私はonDraw関数で使用するデータを渡すための最良の方法を知りたいと思います。これまでのところ、Android Custom View Constructorのようなポストからの助けのビットと私は、次のコードを持っている:
このような私の活動から呼び出されpublic PieChart(Context _context) {
this(_context, null);
}
public PieChart(Context _context, AttributeSet _attrs) {
this(_context, _attrs, null);
}
public PieChart(Context _context, AttributeSet _attrs, ArrayList<ChartData> _data) {
super(_context, _attrs);
if(this.isInEditMode()) {
data = new ArrayList<ChartData>();
data.add(new ChartData("Column A", 50));
data.add(new ChartData("Column B", 75));
data.add(new ChartData("Column C", 60));
} else {
data = _data;
}
context = _context;
paint = new Paint();
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.FILL);
pieRectangle = new RectF(0,0,0,0);
...
}
:
// create the chart
PieChart pieChart = new PieChart(this, null, categoriesChartData);
// add the chart to the linearLayout
linearLayout.addView(pieChart);
そして、私のPieChart.onDrawのような始まりこの:インターフェイスデザイナーで、円グラフは偉大に見えるので、私はonDrawメソッドは動作します知っている、それはアプリが実行されたときにデータが存在し、それを作っていないことを単にだと
protected void onDraw(Canvas canvasChart) {
Log.d(TAG, "Size of data = " + data.size()); // crashes here
...
}
は注意してください。
余分な機能や呼び出しを追加するのではなく、私がAndroidで多くの経験をしていないので、私はそのコミュニティの問題点と最善のアプローチを教えてください。
事前に感謝します。
ビューのために何を拡張していますか?なぜif(this.isInEditMode())ですか? –
新しいカスタムコンストラクタを追加しないでください。セッターを追加する必要があります。 – EpicPandaForce
エラーがあれば、logcatを投稿してください。 – Enzokie