1

我一直在研究 Android 中的 ListView,其中包含许多项目。我希望每个列表项都有一个相应的 HTML 文件,该文件在单击列表项时加载到 WebView 中。每个列表项都有一个相应的 HTML 文件。HTML 存储在设备上。

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

我认为我的问题是我已经习惯了 iOS 开发,而且我很难理解它,而不考虑如何在 iOS 中解决它!

任何输入表示赞赏,

谢谢。

4

3 回答 3

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

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

于 2013-06-16T14:21:26.553 回答
1

您可以将 setOnItemClickListener 用于列表视图并将 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);
  }
});
于 2013-06-14T13:08:56.480 回答
1

为详细视图创建一个新活动,包含 web 视图

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

Activity 接收 Intent,从 Extras 中提取 uri,并让 webview 加载它

本地uris是这样的 "file:///" + context.getExternalFilesDir(null) + "/..."

所以你可能想建立一个数据库来存储 uris,并在 listview 中使用游标适配器

于 2013-06-22T16:10:19.820 回答