XML파싱한 결과
title에는 [수입,지출]이 담겨 있고
values 에는 [1000,2000]이 담겨있어서
제가 원하는 차트의 모양은

이런 느낌의 차트 인데 . ...
public class ChartActivity extends Activity {
private final String SERVER_ADDRESS = "http://--/REAL";
String Email = com.account.real.LoginActivity.userEmail;
Date date;
long now;
String a;
SimpleDateFormat format;
LinearLayout ll ;
//차트 그리기 위한
List<Double> values = new ArrayList<Double>(); //데이터 담아둠
List<String> title = new ArrayList<String>();
;//제목 담아둔다
XYMultipleSeriesRenderer renderer;//그래픽 속성 지정객체
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); //설정
Context context = ChartActivity.this;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chart);
now = System.currentTimeMillis();
date=new Date(now);
format = new SimpleDateFormat("yyyy/MM/dd");
a = format.format(date);
final Handler handler = new Handler();
handler.post(new Runnable() {
public void run() {
try{
URL url = new URL(SERVER_ADDRESS + "/chart2.php?"
+ "Email=" + URLEncoder.encode(Email, "UTF-8")
+ "&Day=" + URLEncoder.encode(a, "UTF-8"));
System.out.println(url);
url.openStream();
ArrayList<String> checkio = getXmlDataList("chart2result.xml", "checkio");
for(int i= 0; i<checkio.size();i++)
{
Log.v("checkio", checkio.get(i));
title.add(checkio.get(i));
}
ArrayList<String> money = getXmlDataList("chart2result.xml", "money");
for(int i= 0; i<money.size();i++)
{
Log.v("money", money.get(i));
values.add(Double.parseDouble(money.get(i)));
}
System.out.println(title);
System.out.println(values);
renderer = new XYMultipleSeriesRenderer();
int[] Colors = new int[] { Color.WHITE };
renderer.setXTitle("분류");
renderer.setYTitle("원");
int length = Colors.length;
for(int i=0; i<length; i++)
{
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(Colors[i]);
renderer.addSeriesRenderer(r);
}
renderer.setAxesColor(Color.WHITE);
// 상단제목, X,Y축 제목, 수치값의 글자 색상
renderer.setLabelsColor(Color.CYAN);
renderer.setXLabelsAlign(Align.LEFT);
renderer.setYLabelsAlign(Align.LEFT);
renderer.setPanEnabled(false, false);
// ZOOM기능 ON/OFF
renderer.setZoomEnabled(false, false);
// ZOOM 비율
renderer.setZoomRate(1.0f);
// 막대간 간격
renderer.setBarSpacing(0.5f);
CategorySeries series = null;
if(title.size() ==0){
Toast.makeText(ChartActivity.this,
"검색된 데이터가 없습니다.", Toast.LENGTH_SHORT).show();
}else{
for (int i = 0; i < title.size(); i++) {
series = new CategorySeries(title.get(i));
double v = values.get(i);
series.add(v);
System.out.println(v);
}
dataset.addSeries(series.toXYSeries());
ll = (LinearLayout)findViewById(R.id.llBody);
GraphicalView gv = ChartFactory.getBarChartView(context, dataset,renderer, Type.DEFAULT);
ll.addView(gv);
}
}catch(Exception e){Log.d("Exception",e.toString());}
}
});
}
private ArrayList<String> getXmlDataList(String filename, String str) { //태그값 여러개를 받아오기위한 ArrayList<string>형 변수
String rss = SERVER_ADDRESS + "/";
ArrayList<String> ret = new ArrayList<String>();
try { //XML 파싱을 위한 과정
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
URL server = new URL(rss + filename);
InputStream is = server.openStream();
xpp.setInput(is, "UTF-8");
int eventType = xpp.getEventType();
while(eventType != XmlPullParser.END_DOCUMENT) {
if(eventType == XmlPullParser.START_TAG) {
if (xpp.getName().equals("item")) {
} else if (xpp.getName().equals(str)) {
if(xpp.next() == XmlPullParser.TEXT) {
Log.v("TAG", "Text: "+xpp.getText());
ret.add(xpp.getText());
}
} else {
Log.v("TAG", "Text "+xpp.getText());
}
}
eventType = xpp.next();
}
} catch (XmlPullParserException e) {
Log.v("TAG", "XmlPullParserException : " + e);
} catch (IOException e) {
Log.v("TAG", "IOException : " + e);
}
/*if(xpp.getName().equals(str)){
ret.add(xpp.nextText());
String data = xpp.nextText();
System.out.println(data);
}else{}
}
eventType = xpp.next();
System.out.println(eventType);
}
} catch(Exception e) {
System.out.println(e+"B");
}
*/
System.out.println(ret+"ret");
return ret;
}
}
이 코드를 돌려보니..
차트가 이렇게 나옵니다.
뭘 바꿔야 차트가 제대로 나올까요?