【问题标题】:Programmatically creating a list of videos以编程方式创建视频列表
【发布时间】:2012-07-30 22:40:23
【问题描述】:

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

对于我的项目,我通过 vimeo 的简单 API 访问视频列表。我用来显示所有信息的当前方法是通过一个 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>

我用来动态构建列表的 sn-p 代码如下。它返回到一个函数“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 浏览器。我希望活动转到我自己的视频播放器,而不是在单击我的选项之一时使用互联网。很可能有更好的方法来做到这一点,但我不确定。

任何输入都会很棒。

【问题讨论】:

    标签: android vimeo


    【解决方案1】:

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

    提示:

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

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

    从 HTML 内部调用方法

    nameOfTheInterface.nameOfTheMethod(Parameters);
    

    我希望这些提示可以帮助你,如果你有其他问题,请在这里发布,我会尝试解决它或者给你一个sn-p。

    更新:

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

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

    【讨论】:

    • 谢谢!这很有帮助!在您发布此方法后,我一直在相当广泛地研究这种方法,它似乎真的可以工作!另一个问题。我仍在尝试找出一种方法来让图像缩略图显示在列表中。有没有办法加载这些图像?
    • 当然有办法做到这一点,但这取决于你的图像来自哪里。如果您从 SD 卡或资产加载这些图像,则必须使用 loaddatawithbaseurl 并像字符串一样发送您的 html,并且您的 baseurl 将取决于您的图像来自何处。如果您的图像来自 URLS,那么您可以使用 loaddata 方法并指向来自 html 的图像。我希望这能解决你的问题,如果没有,请重播。
    • 另外,如果这解决了您的问题,请将答案标记为已接受,这样如果有人来看它,他们就会知道这对您有帮助。
    • 谢谢。我将此标记为已接受,因为原始问题已解决。如果我遇到任何障碍,我会回复。
    • 好的,所以我在想办法让图像显示时遇到了麻烦。图片来自网络。我想它需要一个单独的 AsyncTask 类来处理这些东西。我想我可以在当前类中创建一个嵌套的 AsyncTask 类(上面示例代码中的 java 代码已经在我的 AsyncTask 类中)。即使我得到了要下载的图像,我将如何在 html 中显示它们?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    • 2013-01-12
    相关资源
    最近更新 更多