마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

A차트 엔진 사용 -그래프가 안뜹니다.

0 추천

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;
	    }
	   
	}

이 코드를 돌려보니..

차트가 이렇게 나옵니다.

 

뭘 바꿔야 차트가 제대로 나올까요? 

 

ysy00115 (2,350 포인트) 님이 2014년 8월 5일 질문
ysy00115님이 2014년 8월 5일 수정
에러로그 전체를 올리세요...

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...