【问题标题】:How do I load local HTML files using a ListView in Android?如何在 Android 中使用 ListView 加载本地 HTML 文件?
【发布时间】:2013-06-14 12:57:37
【问题描述】:
【问题讨论】:
标签:
java
android
android-listview
android-webview
【解决方案1】:
在 iOS 中执行此操作的一种方法是将情节提要模板与列表和详细视图一起使用。
您可以在 Android 中使用两个不同的活动来做同样的事情。您已经在列表中进行了一项活动。您应该添加第二个活动,仅使用 WebView(+ 围绕它的任何导航)。
要将其连接起来,您需要将OnItemClickListener 添加到列表视图中,该列表视图会通过适当的活动操作触发意图。
// logic to get the html file goes here
Intent i = new Intent(context, MyWebViewActivity.class);
i.putExtra("fileToShow", theFile);
context.startActivity(i);
在您的MyWebViewActivity 中,您可以这样做:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_with_webview);
final Intent intent = getIntent();
if (null != intent) {
if (intent.hasExtra("fileToShow")) {
WebView myWebView = (WebView) findViewById(R.id.my_web_view);
myWebView.loadUrl("file:///" + intent.getExtras().getString("fileToShow");
}
}
}
您可能需要围绕此添加更多代码和布局以满足您的特定需求 - 但这种通用方法应该可以正常工作。
【解决方案2】:
您可以将 setOnItemClickListener 用于 listview 并将 html 传递给 loadUrl,例如...
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> element, View arg1, int pos, long arg3){
// TODO Auto-generated method stub
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(htmladdress);
}
});
【解决方案3】:
为详细视图创建一个新活动,包含 web 视图
然后,在您的列表视图(主视图)onItemClickListener 回调中获取文件的 uri,将其捆绑为额外的意图并启动新活动
Activity 接收 Intent,从 Extras 中提取 uri,并让 webview 加载它
本地的uri是这样的 "file:///" + context.getExternalFilesDir(null) + "/..."
所以您可能想建立一个数据库来存储 uri,并在列表视图中使用游标适配器