2012-07-30 36 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