만화 사이트 안드로이드 어플 #3

on

일단 우리는 이걸 잘 파싱을 해야한다. java에서 파싱하는 방법이나 라이브러리는 많지만 일단 나는 Jsoup라는 것을 사용하겠다. 혹시 Python의 BeautifulSoup를 안다면 Jsoup를 들었을때 어떠한 형식으로 사용하는지 바로 알 것이다. Jsoup라는 것을 검색하는 것을 추천한다(자세한 설명은 언제나 검색이다) 일단 간단하게 설명하면 jquery선택자를 통해서 파싱이 가능하게 하는 것이다(편하다)

일단 jsoup를 gradle에 추가한다.

스크린샷 2015-12-19 오후 8.19.39.png

그러면 Import 완료이다.(라이브러리는 gradle로 관리하자)

일단 우리는 파싱을 통해 만화의 url과 이름을 가져와서 저장을 하고 싶다. 그걸 위해서 우리는 일단 manhwaList라는 class를 만들도록 하자. 나는 tools 라는 package를 1개 만들어서 그곳에 직접만든 class나 Adapter(뒤에 가면 무엇인지 안다) 등을 저장하기로 하겠다.

스크린샷 2015-12-19 오후 8.29.20.png

스크린샷 2015-12-19 오후 8.29.33.png

그리고 name 과 url을 저장할 class를 이렇게 만들었다. 이제 우리는 getName와 setName등을 통해 class의 name과 url를 만질 수 있다.

그리고 스크린샷 2015-12-19 오후 8.30.36.png

parseJsoup라는 함수를 만들어서 parse를 하는 부분은 그곳에서 처리하도록 하겠다.(한곳에 길게 쓰면 가독성이 안좋다)

스크린샷 2015-12-19 오후 8.31.26.png

이렇게 하였다. 여기서 manhwaLists는

스크린샷 2015-12-19 오후 8.32.00.png

이렇게 선언하였다. 즉 우리는 Jsoup를 통해 htmlSource를 파싱하여 거기서 (#manga-list a)에 알맞은 것들만 빼온뒤 그 뒤에 그걸 for로 반복 시켜서 1개 1개를 listItem이라는 클래스를 만들어 이름과 url를 저장한뒤 그걸 다시 manhwaLists라는 ArrayList에 차곡차곡 저장한다. 이 과정이 끝나면 manhwaLists에는 만화 들이 클래스의 형태로 1개1개 저장이 되어있게 된다. 이제 이것을 바탕으로 view를 꾸미면 된다. 여기까지가 git 3-1이다

 

일단 무난하게 ListView 형태로 보여주게 만들어 보겠다.일단 ListView를 하기 위해

스크린샷 2015-12-20 오후 4.26.37.png

xml 파일에 ListView를 추가합니다. 그리고 listview에 쓸 Adapter를 만듭니다. (ListView, GridView 등 여러가지 view를 쓰기위해서는 Apater가 필수입니다. 잘 모르시면 꼭 검색를 해주시길 바랍니다. 이 부분을 이해하지 못하면 전체적으로 꼬일수 있습니다.

스크린샷 2015-12-20 오후 4.27.30.png스크린샷 2015-12-20 오후 4.27.44.png

일단 여기서 가장 중요한건 맨처음 과 맨끝 입니다. 맨처음에는 이 객체를 만들때 어떻게 선언할지가 나와있습니다.지금은 보셔도 이해가 안가겠지만 이 Adapter를 사용하는 코드를 보면 아 이거 구나 라고 알수 있을 것 입니다. 그리고 맨 끝은 실제 이 클래스가 만드는 view에 대한 설명이 있습니다. 이 view는 listview를 만들고 각각의 listview안에 있는 아이템에 setText를 통해 name를 보이도록 하고 있습니다. 이제 이 코드를 적용시킨 부분을 보도록 합시다.

스크린샷 2015-12-20 오후 4.33.01.png

parseJsoup를 통해서 모든 manhwaList가 manhwaLists안에 들어가게 되면 우리는 makeView를 실행하게 됩니다.(알아보기 쉽게 parse하는 부분과 view를 만드는 부분을 분리하였습니다.) 그리고 makeView 에서는 일단 listView에 ID가 listView인 listview를 줍니다(id를 이상하게 설정해서 복잡해 졌네요. 위에서 설정한 xml 파일과 같이 보시면 이해가 쉽게 되실겁니다) 그리고 우리는 listviewAdapter라는 것에 우리가 아까전에 만든 manhwaListAdapter를 새로 만들어서 지정해 줍니다. 여기서 argument가 2개 인데요 현재 Activity와 manhwaLists 입니다. 위의 manhwaListAdapter 부분의 맨위를 보시면 이 2개를 인자로 받는 것이 나와있습니다. 우리는 이렇게 이러한 인자를 통하여 mItems라는 것에 manhwaLists를 준 것 입니다. 나중에 우리가 다른 ListAdapter를 만들려고 할때도 이부분만 잘 수정하면 될 거 같네요. 그리고 listView에 listViewAdapter를 set시켜 줍니다. 그러면 listView는 listViewAdpater(manhwaListAdapter에서 설정한 getView함수를 통해서 listView에 알맞은 뷰가 보이게 되는 것입니다) 뭔가 설명이 많이 이상해 졌지만 코드를 잘 보면 이해가 될 거라고 생각됩니다. 이로써 우리는 zangsisi.net 에서 html을 가져와서 그걸 parse한후 적당한 class에 저장, 그뒤에 listview에 보이는것까지 구현했습니다. 이제 이걸 바탕으로 앱을 만들어 보도록 하겠습니다. git 3-2가 여기까지 입니다.

 

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

w

%s에 연결하는 중