如何在Android中使用ListView加载本地HTML文件?

时间:2013-06-14 12:57:37

标签: java android android-listview android-webview

我一直在Android中使用许多项目开发ListView。我希望每个列表项都有一个相应的HTML文件,当单击列表项时,该文件将加载到WebView中。每个列表项都有一个相应的HTML文件。 HTML存储在设备上。

为了了解我正在使用的ListView,我在这里修改了教程http://javatechig.com/android/android-listview-tutorial/

我认为我的问题是我已经习惯了iOS开发人员而且我很难在不考虑如何在iOS中解决问题的情况下解决问题!

任何意见,

感谢。

3 个答案:

答案 0 :(得分:3)

在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");
        }
    }
}

您可能需要在此周围添加更多代码和布局以满足您的特定需求 - 但这种一般方法应该可以正常工作。

答案 1 :(得分:1)

你可以使用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);
  }
});

答案 2 :(得分:1)

为详细视图创建一个包含webview

的新活动

然后,在listview(主视图)中,onItemClickListener回调获取文件的uri,将其作为额外的意图捆绑并开始新的活动

活动接收意图,从附加内容中提取uri,并使用webview加载它

当地的uris就像这样 "file:///" + context.getExternalFilesDir(null) + "/..."

所以你可能想要设置一个数据库来存储uris,并使用带有listview的游标适配器