2012-07-28 2 views
0

목록이 포함 된 앱을 만들고 목록의 모든 항목에 몇 가지 값 (이름, 설명 및 날짜)이 있습니다. 목록에있는 항목의 구조를 포함하는 XML 파일을 만들었습니다.
가 나는 또한 (모든 <item> 태그 <name>, <desc><date> 아이가)
문제는 내가 올바른 장소에서 모든 것을 넣어하는 방법을 몰라 목록의 항목을 포함하는 다른 XML 파일을 가지고 ... 내가 ' 웹에서 검색 한 결과 XML 파싱이라는 것을 알았지 만 찾을 수있는 자습서는 this one 이었지만 이해가되지 않을 정도로 명확하지는 않습니다.
누군가 설명하거나 좋은 자습서를 제공 할 수 있습니까?XML 구문 분석 (XML에서 목록으로 데이터 이동)

편집 :
This is 구조의 XML 파일
This is 컨텐츠 XML 파일

답변

2

string-array으로 설정 한 데이터가 올바르게 빌드되어 ListView에 표시되지 않습니다. 그것은 다음과 같이해야합니다 :

Resources res = getResources(); 
     ArrayList<Exam> extractedData = new ArrayList<Exam>(); 
     TypedArray ta = res.obtainTypedArray(R.array.exams); 
     int n = ta.length(); 
     for (int i = 0; i < n; ++i) { 
      int id = ta.getResourceId(i, 0); 
      if (id > 0) { 
       extractedData.add(new Exam(res.getStringArray(id))); 
      } else { 
       // something wrong with the XML, don't add anything 
      } 
     } 
     ta.recycle(); 

Exam 클래스하십시오 ListView은 당신이 쓰는 것이기

<string-array name="exams"> 
     <item>@array/exam1</item> 
     <item>@array/exam2</item> 
     <item>@array/exam3</item> 
     <item>@array/exam4</item> 
    </string-array> 
    <string-array name="exam1"> 
     <item>One</item> 
     <item>11111111One</item> 
     <item>25/7/12</item> 
    </string-array> 
    <string-array name="exam2"> 
     <item>Two</item> 
     <item>2222222222Two</item> 
     <item>28/7/12</item> 
    </string-array> 
    <string-array name="exam3"> 
     <item>Three</item> 
     <item>333333333333Three</item> 
     <item>29/1/10</item> 
    </string-array> 
    <string-array name="exam4"> 
     <item>Four</item> 
     <item>444444444Four</item> 
     <item>21/2/11</item> 
    </string-array> 

가 (: Android Resource - Array of Arrays 코드의 일부는이 답변에서 오는) 좋은 데이터 구조에서이 구문 분석

public class Exam { 
    String name, desc, date; 

    public Exam(String[] dataArray) { 
     this.name = dataArray[0]; 
     this.desc = dataArray[1]; 
     this.date = dataArray[2]; 
    } 
} 

그런 다음 사용자 정의 맥도날드의 extractedDataArrayList을 사용 : 간단한 데이터 홀더 클래스입니다 귀하의 행 레이아웃과 함께 :

public class CustomAdapter extends ArrayAdapter<Exam> { 

    private LayoutInflater mInflater; 

    public CustomAdapter(Context context, int textViewResourceId, 
      List<Exam> objects) { 
     super(context, textViewResourceId, objects); 
     mInflater = LayoutInflater.from(context); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     if (convertView == null) { 
      convertView = mInflater.inflate(
        R.layout.your_layout_file, parent, false); 
     } 
     Exam e = getItem(position); 
     ((TextView) convertView.findViewById(R.id.name)).setText(e.name); 
     ((TextView) convertView.findViewById(R.id.desc)).setText(e.desc); 
     ((TextView) convertView.findViewById(R.id.date)).setText(e.date); 
     return convertView; 
    } 

} 
+0

고마워요! 나는 가야한다. 그러나 내가 돌아 왔을 때 나는 그것을 읽을 것이고, 무엇인가 이해되지 않으면 논평 할 것이다. .. 고마워! –

+0

질문이 있습니다 - CustomAdapter는 무엇입니까? 새로운 수업으로 추가해야합니까? 그리고 그렇다면 - 메인 클래스와 CustomAdapter를 어떻게 연결합니까? –

+1

@RoniCopul 안드로이드의 'ListView'는 데이터를 제공하는 'Adapter'유형의 데이터와 화면에 표시 할 행보기를 필요로하는 데이터 목록을 나타냅니다. 방금 사용자 지정 어댑터를 만들었으므로 기본 어댑터가 데이터를 제공하는 방식을 수정할 수 있습니다.'custom adapter android' 이후의 구글 검색은 필요한 모든 정보를 제공해야합니다 (여기 튜토리얼 http://www.vogella.com/articles/AndroidListView/article.html의 예가 있습니다). – Luksprog

0

나는 최근

http://developer.android.com/training/basics/network-ops/xml.html

는 희망이 튜토리얼을 따라 안드로이드에서 XML을 구문 분석하는 방법을 배웠습니다 도움 :

+0

고맙지 만 목록에도 유용합니까? 아니면 XML 파일을 사용하여 XML 파일에서 응용 프로그램으로 데이터를 이동하는 다른 방법이 있습니까? –

+0

이미 응용 프로그램에있는 목록의 모든 값을 갖고 있습니까? 아니면 어딘가에서 가져올 필요가 있습니까? – Meatje

+0

목록에있는 항목의 구조와 모든 정보가 포함 된 XML 파일이 하나 있지만 정보를 가져와 목록으로 화면에 표시하는 방법을 모릅니다. 항목은 XML 파일에 작성된 방식으로 구조화됩니다 (질문은 목록으로 만드는 방법이 아니라 데이터를 가져와 사용하는 방법입니다) –