<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 一步步教你為網(wǎng)站開(kāi)發(fā)Android客戶(hù)端

一步步教你為網(wǎng)站開(kāi)發(fā)Android客戶(hù)端

作者: 時(shí)間:2016-10-08 來(lái)源:網(wǎng)絡(luò ) 收藏

這時(shí)再運行,控制臺成功輸出以” android開(kāi)發(fā)”為關(guān)鍵字的Content。

至此,我們POST請求才真正完成。 觀(guān)察控制臺的HTML后發(fā)現,我們需要的書(shū)目信息就在里面,只不過(guò)被一些HTML標簽包裹住了,下一步我們就要解放這些信息,存儲到容器里。

這里我們要用到Jsoup,一個(gè)Java開(kāi)源HTML解析器(來(lái)自org.jsoup包)。

我們直接上代碼,逐行解釋(大家最好對應上面的HTML代碼來(lái)理解)

首先我們建一個(gè)容器來(lái)裝這些解析到的數據,由于我的項目是將這些數據以L(fǎng)istView呈現給用戶(hù),而ListView的數據是由Adapter提供,Adapter需要傳一個(gè)特殊容器-包含HashMap的ArrayList(Android基礎知識)

//所以有

List

//開(kāi)始使用Jsoup

//Jsoup支援一個(gè)Document類(lèi) 將剛才的html轉化成Document

Document document = Jsoup.parse(html);

//一個(gè)Document又由elements組成 我們選擇”tr”開(kāi)頭的標簽,存入 trs元素群中

Elements trs = document.select(tr);

//得到整個(gè)HTML中包含tr的標簽的個(gè)數

int totalTrs = trs.size();

//我們可以觀(guān)察上面沒(méi)有搜索結果的那個(gè)HTML。發(fā)現,如果totalTrs=3就表示沒(méi)結果。

//只要有書(shū)目結果totalTrs必定大于3,于是

if(totalTrs > 3)

for(int i = 0;i totalTrs – 3;i++)

{

//觀(guān)察HTML,從第i+2個(gè)tr開(kāi)始,包含的才是我們要的書(shū)目信息

//我們從每個(gè)tr中選出td標簽元素群

Elements tds = trs.get(i + 2).select(td);

//得到每個(gè)tr中td的個(gè)數

int totalTds = tds.size();

//一個(gè)臨時(shí)的HashMap,里面是String-Object鍵值對

Map

//j是一個(gè)標識數

for(int j =0;j totalTds ;j++)

{

switch (j) {

//0表示第一個(gè),即書(shū)名

//put方法即向map加入一條鍵值對

//html()方法就得到標簽括起來(lái)的內容

case 0:

map.put(book_title, tds.get(j).html().toString());

break;

case 1:

//1表示第二個(gè),即作者

map.put(book_author, tds.get(j).html().toString());

break;

case 2:

//2表示第三個(gè),即出版信息

map.put(book_press, tds.get(j).html().toString());

break;

case 3:

//3表示第四個(gè),即頁(yè)數

map.put(book_page, tds.get(j).html().toString());

break;

case 4:

//4表示第五個(gè),即價(jià)格

map.put(book_price, tds.get(j).html().toString());

break;

case 5:

//5表示第六個(gè),即索取號

map.put(book_noFor, tds.get(j).html().toString());

break;

case 6:

//6表示第七個(gè),即那段網(wǎng)址

//那段網(wǎng)址td中又包含一個(gè)a標簽,a標簽的href屬性的值就是網(wǎng)址

//attr(“href”)可以返回href屬性的值

map.put(book_detail, tds.get(j).select(a).attr(href).toString());

break;

default:

break;

}

}

list.add(map);

}

list就是我們需要的ArrayList啦

上面所有代碼調通后,我們只需一些簡(jiǎn)單的復制粘貼,就可以放在我們的Android工程中,加上一段簡(jiǎn)單的代碼就可以讓ListView顯示這個(gè)ArrayList。(由于沒(méi)有任何技術(shù)含量,以及該項目暫未上線(xiàn),此段代碼不予以展示,敬請諒解)

接下來(lái),我們一個(gè)頁(yè)面最多只包含10個(gè)書(shū)目信息,而我們校圖書(shū)館,光以”Java”為關(guān)鍵字的書(shū)就超過(guò)1000本,怎么來(lái)顯示完全呢,一次顯示所有的書(shū)肯定不現實(shí)。首先數據量太大,手機無(wú)法承受;消耗流量過(guò)大,用戶(hù)體驗極差。所以,我們就需要ListView能夠動(dòng)態(tài)加載數據,即一開(kāi)始顯示十項,如果用戶(hù)此時(shí)拉動(dòng)ListView顯示完十項之后,自動(dòng)聯(lián)網(wǎng),再加載十項(如果還有十項的話(huà)),這樣的用戶(hù)體驗會(huì )非常順暢。

這個(gè)功能的核心是,我們的ListView需要實(shí)現OnScrollListener接口。

如果你的ListView所在的Activity繼承的是ListActivity的話(huà),只需在extends ListActivity后面加上implements OnScrollListener,這時(shí)你需要復寫(xiě)onScroll和onScrollStateChanged。如果你的ListView是從XMLgetView 得到的,你只需為它setOnScrollListener,也會(huì )需要你復寫(xiě)onScroll和onScrollStateChanged。

不管你用哪種方法,我們只用修改onScroll方法

@Override

public void onScroll(AbsListView view, int firstVisibleItem,

int visibleItemCount, int totalItemCount) {

// TODO Auto-generated method stub

//關(guān)鍵的判斷代碼,這句話(huà)表示用戶(hù)將ListView拉至最底部

if(firstVisibleItem + visibleItemCount == totalItemCount)

//你只需要把繼續得到下面十項的代碼寫(xiě)在這里,就可以實(shí)現上述功能了。

//同樣再使用一次POST方法,不再贅述

//代碼由于同樣原因不予以展示,敬請諒解

至此,文章開(kāi)頭的幾個(gè)知識點(diǎn)已經(jīng)全部講解完畢,時(shí)間倉促,事物繁忙,可能會(huì )影響文章質(zhì)量,還請大家多多包涵。 如果有問(wèn)題,可以直接回帖、發(fā)論壇信息或通過(guò)Email:anliupeinye@gmail.com聯(lián)系我。

項目成品展示:

看看這些信息是不是就是上面用網(wǎng)頁(yè)以android為關(guān)鍵字搜索到的?


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>