웹 xml 파일을
파싱해서 listview에 뿌려주고 싶습니다.
XmlPullParser 로 파싱을 받아오는 것 까지는 했는데요.
파싱한 내용이 2종류입니다.
그 2종류를 listview에 뿌려주고 싶은데...
listview는 파싱한 것 갯수에 따라 늘어나야 되구요.
그림의 listview 처럼 한 칸에 2종류의 데이터를 뿌려주고 싶습니다..
파싱한 2종류 데이터는 Vector를 2개 만들어서 담았습니다.
어떻게 하면 listview에 파싱한 내용을 뿌려줄 수 있을까요.
listview가 생각보다 굉장히 어렵네요..
고수분들 많은 조언과 관련 소스나 예제 있으시면 좀 부탁드리겠습니다.
1. 리스트뷰 출력을 위한 xml을 두개 만듭니다.(리스트 전체출력을 위한 xml과 리스트의 각행출력을 위한 xml)
2. 전체출력.xml 파일에 리스트뷰를 넣습니다. 이때 리스트뷰의 ID는 @id/android:list 여야 합니다.
3. 각행출력.xml 파일에 질문자님의 스샷처럼 각행을 출력하는 레이아웃을 작성합니다.
예를 들기 위해 name과 phone이라는 두개 텍스트뷰를 만듭니다. 스샷처럼..
그리고 가장 최상위 LinearLayout의 height속성을 60dip으로 설정합니다.(각 리스트의 높이)
4. ListActivity 를 상속받은 클래스를 하나 만듭니다.(ListTest라고 하겠습니다)
5. ListTest 클래스 안에 private으로 ArrayAdapter<Person>을 상속받아 ListTestAdapter(이름은 바꾸셔도 되는것 아시죠^^?)를 만듭니다.
6. ListTest클래스 안에 또 private으로 Person클래스를 만듭니다.(5번에서 ArrayAdapter<Person> 요기에 들어가는 클래스입니다.)
7. Person 클래스는 사람이름, 전화번호를 담고 있다고 예를 들겠습니다.
Person안에
String name;
String phone;
처럼 리스트뷰에 출력될 변수를 선언해 주시고, 각 변수의 setter와 getter를 만듭니다.
생성자도 만듭니다!
8. 다시 5번에 작성한 ListTestAdapter 클래스 안에 아래와 같이 적는다.
private ArrayList<Person> items; //실제 리스트의 요소가 될 아이템들
public HistoryAdapter(Context context, int rId, ArrayList<Person> items){
super(context, rId, items);
this.items = items;
}//생성자
/**
* 리스트를 출력해주는 함수
*/
public View getView(int position, View convertView, ViewGroup parent){
View v = convertView;
if(v==null){
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.history_rows, null);
}
Person p = items.get(position);
if(p != null){
//아래 두개의 텍스트뷰는 이름과 번호를 출력할 텍스트뷰고, 3번에서 각행출력을 위해 만든 텍스트뷰입니다.
TextView name = (TextView)v.findViewById(이름을 출력할 텍스트뷰);
TextView phone = (TextView)v.findViewById(번호를 출력할 텍스트뷰);
if(name != null) name.setText(p.getName());
if(phone != null) name.setText(p.getPhone());
}
}
9. 이렇게 하셨으면 이제 다했습니다.
리스트를 출력하기 위해서는
ArrayList<Person> p_orders = new ArrayList<Person>(); 을 선언해줍니다.
홍길동 11111, 김갑수 22222, 권상우 33333을 리스트에 넣겠습니다.
Person p1 = new Person("홍길동", "1111");
p_orders.add(p1); // 이부분이 리스트에 출력될 요소를 집어넣는 부분입니다.
Person p2 = new Person("김갑수", "2222");
p_orders.add(p2);
Person p3 = new Person("권상우", "3333");
p_oders.add(p3);
10. 만들었던 ListTestAdapter의 인스턴스를 생성합니다.
ListTestAdapter lAdapter = new ListTestAdapter(1, 2, 3);
// 1번 인자 : 현재 클래스의 this
// 2 : 각행출력을 위해 만든 xml 의 R.layout...
// 3: 9번에서 만들었던 p_orders
11. setListAdapter(lAdapter); 를 해주면 리스트가 출력됩니다~




Listview 한칸 한칸에 대한 레이아웃을 xml 을 이용하여 만들어 주실 수 있습니다.
listview 한칸을 여러 칸으로 나눌 수 있구요,
inflater 를 사용하셔서 연결하시면 됩니다.
리스트뷰에 대한 정보는 검색을 통해 쉽고 자세히 구하실 수 잇습니다 ^^