0

我正在尝试创建用户可以查看的视频列表。这需要是动态的,因为列表将根据添加到我从中提取视频的数据库中的新条目进行更新。

对于我的项目,我通过 vimeo 的简单 API 访问视频列表。我用来显示所有信息的当前方法是通过从 StringBuilder 对象 htmlString 获取其信息的 webview 对象。

我的视图 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)”,该函数显示带有从 for 循环创建的 html 的 webview。

    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 请求来获取图像。还有其他方法可以解决这个问题吗?

另外,我觉得这种创建菜单的方法可能不是最好的。当用户单击链接时,控制流会超出我的活动,并转到将播放视频的 Web 浏览器。我希望活动转到我自己的视频播放器,而不是在单击我的选项之一时使用互联网。很可能有更好的方法来做到这一点,但我不确定。

任何输入都会很棒。

4

1 回答 1

1

如果您使用 WebView 创建播放列表,那么我建议您在 WebView 中使用 JavaScript 接口,以便您可以在活动和 WebView 之间发送信息,因此当用户单击缩略图时,您可以向活动发送“id”用户点击的缩略图。

尖端:

要添加界面,您可以这样做

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

从 HTML 内部调用方法

nameOfTheInterface.nameOfTheMethod(Parameters);

我希望这些提示可以帮助您,如果您还有其他问题,请在此处发布,我会尝试解决它或者给您一个片段。

更新:

如果您的图像来自“互联网”(HTTP 或类似的东西),那么您可以像往常一样将 URL 放入 HTML 代码中,或者您可以将它们下载到 SD 卡(使用您的 asynctask 类)然后让一个听众在图像完全下载时通知您,以便您可以“延迟加载”将图像“插入”到 HTML 页面的代码部分。可以使用链接中提供的代码来实现延迟加载,并调用它,您可以执行YourWebView.loadUrl("javascript:functionThatCallsTheLazyLoad(Parameters)")

我希望此更新可以帮助您解决问题。

于 2012-07-30T23:54:50.403 回答