|
3 | 3 |
|
4 | 4 | import android.graphics.Color; |
5 | 5 | import android.os.Bundle; |
| 6 | +import android.util.Log; |
6 | 7 | import android.view.Menu; |
7 | 8 | import android.view.MenuItem; |
8 | 9 | import android.view.WindowManager; |
@@ -34,107 +35,115 @@ protected void onCreate(Bundle savedInstanceState) { |
34 | 35 | mChart.setDrawYValues(false); |
35 | 36 | mChart.setDrawGridBackground(false); |
36 | 37 | mChart.setDescription(""); |
| 38 | + |
| 39 | + addEmptyData(); |
37 | 40 |
|
38 | | - // create 30 x-vals |
39 | | - String[] xVals = new String[30]; |
40 | | - |
41 | | - for (int i = 0; i < 30; i++) |
42 | | - xVals[i] = "" + i; |
43 | | - |
44 | | - // create 10 y-vals |
45 | | - ArrayList<Entry> yVals = new ArrayList<Entry>(); |
46 | | - |
47 | | - for (int i = 0; i < 10; i++) |
48 | | - yVals.add(new Entry((float) (Math.random() * 50) + 50f, i)); |
49 | | - |
50 | | - LineDataSet set = new LineDataSet(yVals, "DataSet 1"); |
51 | | - set.setLineWidth(2.5f); |
52 | | - set.setCircleSize(4.5f); |
53 | | - set.setColor(Color.rgb(240, 99, 99)); |
54 | | - set.setCircleColor(Color.rgb(240, 99, 99)); |
55 | | - set.setHighLightColor(Color.rgb(190, 190, 190)); |
56 | | - |
57 | | - LineData data = new LineData(xVals, set); |
58 | | - |
59 | | - mChart.setData(data); |
60 | 41 | mChart.invalidate(); |
61 | 42 | } |
62 | | - |
63 | | - int[] mColors = ColorTemplate.VORDIPLOM_COLORS; |
| 43 | + |
| 44 | + int[] mColors = ColorTemplate.VORDIPLOM_COLORS; |
64 | 45 |
|
65 | 46 | private void addEntry() { |
66 | | - |
67 | | - LineData data = mChart.getDataOriginal(); |
68 | 47 |
|
69 | | - LineDataSet set = data.getDataSetByIndex(0); |
70 | | - // set.addEntry(...); |
| 48 | + LineData data = mChart.getDataOriginal(); |
71 | 49 |
|
72 | | - if(set != null) { |
73 | | - |
| 50 | + if(data != null) { |
| 51 | + |
| 52 | + LineDataSet set = data.getDataSetByIndex(0); |
| 53 | + // set.addEntry(...); |
| 54 | + |
| 55 | + if (set == null) { |
| 56 | + set = createSet(); |
| 57 | + data.addDataSet(set); |
| 58 | + } |
| 59 | + |
74 | 60 | data.addEntry(new Entry((float) (Math.random() * 50) + 50f, set.getEntryCount()), 0); |
75 | 61 |
|
76 | 62 | // let the chart know it's data has changed |
77 | 63 | mChart.notifyDataSetChanged(); |
78 | 64 |
|
79 | 65 | // redraw the chart |
80 | | - mChart.invalidate(); |
| 66 | + mChart.invalidate(); |
81 | 67 | } |
82 | 68 | } |
83 | 69 |
|
84 | 70 | private void removeLastEntry() { |
85 | | - |
86 | | - LineData data = mChart.getDataOriginal(); |
87 | 71 |
|
88 | | - LineDataSet set = data.getDataSetByIndex(0); |
| 72 | + LineData data = mChart.getDataOriginal(); |
89 | 73 |
|
90 | | - if(set != null) { |
| 74 | + if(data != null) { |
| 75 | + |
| 76 | + LineDataSet set = data.getDataSetByIndex(0); |
91 | 77 |
|
92 | | - Entry e = set.getEntryForXIndex(set.getEntryCount() - 1); |
| 78 | + if (set != null) { |
93 | 79 |
|
94 | | - data.removeEntry(e, 0); |
95 | | - // or remove by index |
96 | | - // mData.removeEntry(xIndex, dataSetIndex); |
| 80 | + Entry e = set.getEntryForXIndex(set.getEntryCount() - 1); |
97 | 81 |
|
98 | | - mChart.notifyDataSetChanged(); |
99 | | - mChart.invalidate(); |
| 82 | + data.removeEntry(e, 0); |
| 83 | + // or remove by index |
| 84 | + // mData.removeEntry(xIndex, dataSetIndex); |
| 85 | + |
| 86 | + mChart.notifyDataSetChanged(); |
| 87 | + mChart.invalidate(); |
| 88 | + } |
100 | 89 | } |
101 | 90 | } |
102 | 91 |
|
103 | 92 | private void addDataSet() { |
104 | | - |
| 93 | + |
105 | 94 | LineData data = mChart.getDataOriginal(); |
106 | 95 |
|
107 | | - int count = (data.getDataSetCount() + 1); |
| 96 | + if(data != null) { |
108 | 97 |
|
109 | | - // create 10 y-vals |
110 | | - ArrayList<Entry> yVals = new ArrayList<Entry>(); |
| 98 | + int count = (data.getDataSetCount() + 1); |
111 | 99 |
|
112 | | - for (int i = 0; i < data.getXValCount(); i++) |
113 | | - yVals.add(new Entry((float) (Math.random() * 50f) + 50f * count, i)); |
114 | | - |
| 100 | + // create 10 y-vals |
| 101 | + ArrayList<Entry> yVals = new ArrayList<Entry>(); |
115 | 102 |
|
116 | | - LineDataSet set = new LineDataSet(yVals, "DataSet " + count); |
117 | | - set.setLineWidth(2.5f); |
118 | | - set.setCircleSize(4.5f); |
119 | | - |
120 | | - int color = mColors[count % mColors.length]; |
121 | | - |
122 | | - set.setColor(color); |
123 | | - set.setCircleColor(color); |
124 | | - set.setHighLightColor(color); |
| 103 | + for (int i = 0; i < data.getXValCount(); i++) |
| 104 | + yVals.add(new Entry((float) (Math.random() * 50f) + 50f * count, i)); |
125 | 105 |
|
126 | | - data.addDataSet(set); |
127 | | - mChart.notifyDataSetChanged(); |
128 | | - mChart.invalidate(); |
| 106 | + LineDataSet set = new LineDataSet(yVals, "DataSet " + count); |
| 107 | + set.setLineWidth(2.5f); |
| 108 | + set.setCircleSize(4.5f); |
| 109 | + |
| 110 | + int color = mColors[count % mColors.length]; |
| 111 | + |
| 112 | + set.setColor(color); |
| 113 | + set.setCircleColor(color); |
| 114 | + set.setHighLightColor(color); |
| 115 | + |
| 116 | + data.addDataSet(set); |
| 117 | + mChart.notifyDataSetChanged(); |
| 118 | + mChart.invalidate(); |
| 119 | + } |
129 | 120 | } |
130 | 121 |
|
131 | 122 | private void removeDataSet() { |
132 | | - |
| 123 | + |
133 | 124 | LineData data = mChart.getDataOriginal(); |
| 125 | + |
| 126 | + if(data != null) { |
134 | 127 |
|
135 | | - data.removeDataSet(data.getDataSetByIndex(data.getDataSetCount() - 1)); |
| 128 | + data.removeDataSet(data.getDataSetByIndex(data.getDataSetCount() - 1)); |
| 129 | + |
| 130 | + mChart.notifyDataSetChanged(); |
| 131 | + mChart.invalidate(); |
| 132 | + } |
| 133 | + } |
| 134 | + |
| 135 | + private void addEmptyData() { |
136 | 136 |
|
137 | | - mChart.notifyDataSetChanged(); |
| 137 | + // create 30 x-vals |
| 138 | + String[] xVals = new String[30]; |
| 139 | + |
| 140 | + for (int i = 0; i < 30; i++) |
| 141 | + xVals[i] = "" + i; |
| 142 | + |
| 143 | + // create a chartdata object that contains only the x-axis labels (no entries or datasets) |
| 144 | + LineData data = new LineData(xVals); |
| 145 | + |
| 146 | + mChart.setData(data); |
138 | 147 | mChart.invalidate(); |
139 | 148 | } |
140 | 149 |
|
@@ -174,8 +183,28 @@ public boolean onOptionsItemSelected(MenuItem item) { |
174 | 183 | removeDataSet(); |
175 | 184 | Toast.makeText(this, "DataSet removed!", Toast.LENGTH_SHORT).show(); |
176 | 185 | break; |
| 186 | + case R.id.actionAddEmptyLineData: |
| 187 | + addEmptyData(); |
| 188 | + Toast.makeText(this, "Empty data added!", Toast.LENGTH_SHORT).show(); |
| 189 | + break; |
| 190 | + case R.id.actionClear: |
| 191 | + mChart.clear(); |
| 192 | + Toast.makeText(this, "Chart cleared!", Toast.LENGTH_SHORT).show(); |
| 193 | + break; |
177 | 194 | } |
178 | 195 |
|
179 | 196 | return true; |
180 | 197 | } |
| 198 | + |
| 199 | + private LineDataSet createSet() { |
| 200 | + |
| 201 | + LineDataSet set = new LineDataSet(null, "DataSet 1"); |
| 202 | + set.setLineWidth(2.5f); |
| 203 | + set.setCircleSize(4.5f); |
| 204 | + set.setColor(Color.rgb(240, 99, 99)); |
| 205 | + set.setCircleColor(Color.rgb(240, 99, 99)); |
| 206 | + set.setHighLightColor(Color.rgb(190, 190, 190)); |
| 207 | + |
| 208 | + return set; |
| 209 | + } |
181 | 210 | } |
0 commit comments