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

ArrayList가 이상하네요 ㅠㅠ값이 전부다 마지막 값이랑 똑같아요;;

0 추천

간단하게 설명드리면 xml을 파싱중입니다.

<name>test1</name>

<style>point</point>

<value>1111.1111,1111.1111</value>

<name>test2</name>

<style>point</point>

<value>2222.2222,2222.2222</value>

<name>test3</name>

<style>point</point>

<value>3333.3333,3333.3333</value>

이런 xml 파일이 있다고 할때

-------------------------------------------------------------------

while (eventType != XmlPullParser.END_DOCUMENT) {
    switch (eventType) {
    case XmlPullParser.START_DOCUMENT:
     tv1.setText("start_document");
     break;
    case XmlPullParser.END_DOCUMENT:
     tv2.setText("end_document");
     break;
    case XmlPullParser.END_TAG:
     tv3.setText("end_tag");
     break;
    case XmlPullParser.START_TAG:
     if (parser.getName().equals("style")) { // stylel 일 때는  TEXT의 0로
      initem = 0;
     } else if (parser.getName().equals("name")) { // name 일 때는 TEXT의 1로
      initem = 1;
     } else if (parser.getName().equals("value")) { // value 일때는 TEXT의 2으로
      initem = 2;
     }
     tv4.setText("start_tag");
     break;
    case XmlPullParser.TEXT:
     ItemName="";
     if (initem == 0)// style
     {
      ItemName = parser.getText();
      parsing_data[0] = ItemName;
      //Log.d("parsing_data[0]", parsing_data[0]);
      initem = 10;      
     }
     else if(initem == 1)// name
     {    
      ItemName = parser.getText();      
      parsing_data[1] = ItemName;
      //Log.d("parsing_data[1]",parsing_data[1]);
      initem = 10;     
     }
     else if(initem == 2)// value
     {
      ItemName = parser.getText();
      if (ItemName.length() > 5) {
       parsing_data[2] = ItemName;       
       //Log.d("parsing_data[2]", parsing_data[2]);
       
      }      
      initem = 10;     
     }
     tv5.setText("text");
     datalist.add(parsing_data);
     break;
    }
    eventType = parser.next();
   }
   
  

이런 식으로 만들었습니다.

제 생각에는

datalist 에

   <style> <name> <value>

0   point      test1     1111.1111,1111.1111

1   point      test2     2222.2222,2222.2222

2   point      test3     3333.3333,3333.3333

이렇게 저장이 되어있다고 생각하는데요..

Log.d("datalist----------", Arrays.toString(datalist.get(0)));
Log.d("datalist----------", Arrays.toString(datalist.get(1)));
Log.d("datalist----------", Arrays.toString(datalist.get(2)));

 

이렇게 해서 뿌려보면..

[point, test3, 3333.3333,3333.3333]

[point, test3, 3333.3333,3333.3333]

[point, test3, 3333.3333,3333.3333]

이렇게 나오거든요 ㅠㅠ..

죄송합니다. 마지막값이 다 나오네요. 수정했습니다.


parsing_data[0],parsing_data[1],parsing_data[2]에는 값 잘 들어가는거 확인했는데..

ArrayList 의 값을 확인해보면 마지막값과 다 동일해요 ㅠㅠ

이거 뭐가 잘못된거죠;;

 

 

아 참고로 선언 부분은 아래처럼 했어요.

public ArrayList<String[]> datalist = new ArrayList<String[]>();
public String[] parsing_data = new String[3];

익명사용자 님이 2013년 2월 28일 질문
2013년 2월 28일 수정

1개의 답변

+1 추천
 
채택된 답변

 

parsing_data 배열을 새로 할당받는게 아니고 하나를 계속 돌려써서 그럽니다.

ItemName = parser.getText();

parsing_data = new String[3]
parsing_data[0] = ItemName;

해보세요

 
천도복숭아 (6,080 포인트) 님이 2013년 2월 28일 답변
감사합니다. 말씀하신대로 했더니 해결됐네요 ^^
...