我正在尝试创建用户可以查看的视频列表。这需要是动态的,因为列表将根据添加到我正在绘制视频的数据库中的新条目进行更新。
对于我的项目,我通过其简单的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)”,它显示带有从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浏览器,在那里播放视频。我想让活动转到我自己的视频播放器,而不是在点击我的选项之后使用互联网。最有可能采取更好的方法,但我不确定。
任何输入都会很棒。
答案 0 :(得分:1)
如果您使用WebView创建播放列表,那么我建议您在WebView中使用JavaScript界面,这样您就可以在活动和WebView之间发送信息,因此当用户点击缩略图时,您可以发送活动“ id“用户点击的缩略图。
提示:
要添加界面,请按照这种方式执行
WebView web = new WebView();
web.addJavascriptInterface(new classWhereTheMethodsAre(), "nameOfTheInterface");
从HTML内部调用方法
nameOfTheInterface.nameOfTheMethod(Parameters);
我希望这些提示能为您提供帮助,如果您有其他问题请在此处发布,我会尽力解决或者给您一个片段。
<强>更新强>
如果您的图片来自“互联网”(HTTP或类似的东西),那么您可以像往常一样将URL放在HTML代码中,或者您可以将它们下载到SD卡(与您的asynctask类)然后有一个监听器,在图像完全下载时通知您,这样您就可以"lazy load"将图像“插入”HTML页面的代码部分。使用链接中提供的代码可以实现延迟加载,并且可以调用它来执行YourWebView.loadUrl("javascript:functionThatCallsTheLazyLoad(Parameters)")
我希望此更新可以帮助您解决问题。