2012-07-30 35 views
0

我試圖創建用戶可以查看的視頻列表。這需要是動態的,因爲列表將根據添加到正在繪製視頻的數據庫的新條目進行更新。以編程方式創建視頻列表

對於我的項目,我通過其簡單的API訪問來自vimeo的視頻列表。我用來顯示所有信息的當前方法是通過一個webview對象,它從StringBuilder對象htmlString獲取它的信息。

我的看法XML如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<WebView 
    android:id="@+id/videoMenu" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" /> 

</RelativeLayout> 

的,我用它來建立我的清單的代碼段動態如下。它返回一個函數「onPostExecute(String result)」,它顯示了web視圖和從for循環創建的html。

for (VideoDataParser.Entry video : videos) 
    { 
     htmlString.append("<p>"); 
     htmlString.append("<a href=\"" + video.url + "\">"); 
     htmlString.append("<img align=\"left\" src=\"" + video.thumbnail_url + "\">"); 
     htmlString.append(video.title + "<br>"); 
     htmlString.append(video.description); 
     htmlString.append("</p>"); 

    } 
    return htmlString.toString(); 

我現在的主要問題是圖像未加載。我想這是因爲它需要另一個HTTP請求來獲取圖像。有沒有其他方法可以解決這個問題?

此外,我覺得這種創建菜單的方法可能不是最好的。當用戶點擊鏈接時,控制流程會超出我的活動範圍,並轉到網絡瀏覽器,在其中播放視頻。我希望該活動能夠通過點擊我的某個選項而進入我自己的視頻播放器,而不是使用互聯網。這很有可能是一種更好的方式,但我不確定。

任何輸入都會很棒。

回答

1

如果您使用WebView創建播放列表,那麼我會建議在WebView內部使用JavaScript接口,以便您可以在活動和WebView之間發送信息,因此當用戶單擊縮略圖時,您可以將活動用戶點擊的縮略圖的「id」。

提示:

要添加的接口,你做這種方式

WebView web = new WebView(); 
web.addJavascriptInterface(new classWhereTheMethodsAre(), "nameOfTheInterface"); 

從內部HTML調用該方法

nameOfTheInterface.nameOfTheMethod(Parameters); 

我希望這個技巧可以幫助你,如果你有其他問題,請在這裏發佈,我會盡力解決它,或者給你一個s nippet。

UPDATE:

如果您的圖片來自於「互聯網」(HTTP或類似的東西),那麼你可以把網址中的HTML代碼,就像你通常會做的話,或者你可以將它們下載到SD CARD(使用asynctask類),然後讓監聽器在圖像完全下載時通知您,因此您可以將代碼「插入」到HTML頁面的代碼部分。可以使用鏈接中提供的代碼實現延遲加載,並調用它您可以做一個YourWebView.loadUrl("javascript:functionThatCallsTheLazyLoad(Parameters)")

我希望此更新可以幫助您解決您的問題。

+0

謝謝!這很有幫助!我發佈了這個以後,我一直在相當廣泛地研究這種方法,看起來它可以真正起作用! 還有一個問題。我仍然在想辦法讓圖片縮略圖顯示在列表中。有沒有加載這些圖像的方法? – ahauth 2012-08-01 03:22:57

+0

當然有辦法做到這一點,但它取決於你的圖像來自哪裏。如果您正在從SD卡或資產中加載這些圖像,則必須使用[loaddatawithbaseurl](http://developer.android.com/reference/android/webkit/WebView.html)並將您的html發送到一個字符串和你的baseurl將取決於你的圖像來自何處。如果您的圖像來自URLS,那麼您可以使用loaddata方法並指向html中的圖像。我希望這能解決你的問題,如果不是,請重播。 – 2012-08-01 15:39:20

+0

此外,如果這解決了您的問題,請將答案標記爲已接受,所以如果有人來看看它們,他們會知道這對您有幫助。 – 2012-08-01 15:43:09