如何在Android的listview中实现webview?

如何在Android的listview中实现webview?,android,listview,webview,Android,Listview,Webview,我正在尝试在listview中实现webview。但我没办法弄明白 对不起,问了个基本问题。到目前为止,我的代码就是这样的 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ma

我正在尝试在listview中实现webview。但我没办法弄明白

对不起,问了个基本问题。到目前为止,我的代码就是这样的

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ListView lv = (ListView)findViewById(R.id.listView2);
    ListAdapter adapter = new ListAdapter(this);

    lv.setAdapter(adapter);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {

    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

}
这是我的xml部分:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:orientation="vertical">

<ListView
    android:layout_height="fill_parent"
    android:id="@+id/listView2"
    android:layout_width="fill_parent"/>
</LinearLayout>

正如@Kevin所解释的,网络视图可能是所有Android平台中最重的组件,这与人们通常期望的listview行组件完全相反:轻量级和快速,平滑列表显示的秘密


尝试另一种设计。通常,我真的不鼓励人们制作混合应用程序,但我不想卷入宗教战争。但是如果你真的想要一个网络视图,为什么不把你的列表放在你想要显示的html页面中呢。在所有Android设备和版本上,已经有一个webview实例以正确的方式运行,并且表现良好,这可能是一个挑战。这将比另一种方式容易得多。

正如@Kevin所解释的,WebView可能是所有Android平台中最重的组件,这与人们通常期望的listview行组件完全相反:轻量级和快速,平滑列表显示的秘密


尝试另一种设计。通常,我真的不鼓励人们制作混合应用程序,但我不想卷入宗教战争。但是如果你真的想要一个网络视图,为什么不把你的列表放在你想要显示的html页面中呢。在所有Android设备和版本上,已经有一个webview实例以正确的方式运行,并且表现良好,这可能是一个挑战。这比另一种方法要容易得多。

将webview放在线性布局或类似布局中,初始化时具有固定大小。然后,如果需要,您可以稍后计算出内容的大小并调整webview的大小

2016年成为州政府。有了ChromeWebView组件,它们可以很好地工作,一些应用程序可以做到这一点

你只需要好好照顾他们。设置状态和内容以及所有这些,适当地调整它们的大小

如果可能而且更可取的话,“就是不要那样做”不是一个好答案。webview组件具有多线程渲染等“缺点”,它为android样式化视图提供了一些优势,比如css,并可能从服务器加载,允许在不重新部署的情况下更改样式

另外,作为专业提示,不要从网络加载,只需直接从内存缓存将数据转储到webview中。您还可以在列表中向上/向下预加载两个Web视图,或者在渲染后缓存为位图(如果只是为了显示)


如果您可以在webview中禁用javascript,那就更好了。

将webview放在线性布局或类似布局中,初始化时具有固定大小。然后,如果需要,您可以稍后计算出内容的大小并调整webview的大小

2016年成为州政府。有了ChromeWebView组件,它们可以很好地工作,一些应用程序可以做到这一点

你只需要好好照顾他们。设置状态和内容以及所有这些,适当地调整它们的大小

如果可能而且更可取的话,“就是不要那样做”不是一个好答案。webview组件具有多线程渲染等“缺点”,它为android样式化视图提供了一些优势,比如css,并可能从服务器加载,允许在不重新部署的情况下更改样式

另外,作为专业提示,不要从网络加载,只需直接从内存缓存将数据转储到webview中。您还可以在列表中向上/向下预加载两个Web视图,或者在渲染后缓存为位图(如果只是为了显示)


如果您可以在webview中禁用javascript,那就更好了。

您需要实现ListAdapter,并且列表视图中的每一行都是您想要的webview。因此,webview是一个相当重的组件,您确定要在ListView中实现它吗?每次它被回收,你都必须重新装载里面的东西。答案是不要这样做。WebView非常昂贵,不应该放在ListView中。但是,如果您有相对较少的WebView,并且无论性能如何,都坚持这样做,您可以尝试这样做,或者简单地将它们放在线性布局中。您需要实现ListAdapter,并且列表视图中的每一行都是您想要的WebView。所以WebView是一个相当重的组件,您确定要在ListView中实现它吗?每次它被回收,你都必须重新装载里面的东西。答案是不要这样做。WebView非常昂贵,不应该放在ListView中。但是,如果您的WebView数量相对较少,并且无论性能如何,都坚持这样做,您可以尝试这样做,或者简单地将它们放在线性布局中。从性能角度来看,您对在较新的RecyclerViews中使用WebView有何看法?尽管WebView是重组件,但它们将是可重用的支架的一部分。@Chebyr,是的,这样应该可以很好地工作。不幸的是,它并没有这样做,而WebView在回收者视图中的表现非常糟糕。它们实际上是非常非常复杂的组件、多线程渲染等。这使得它实际上是一个非常糟糕的RecyclerViewItem组件。从性能角度来看,您对在较新的RecyclerViews中使用WebView有什么看法?尽管WebView是重组件,但它们将是可重用的支架的一部分。@Chebyr,是的,这样应该可以很好地工作。不幸的是,它并没有这样做,而WebView在回收者视图中的表现非常糟糕。它们是非常复杂的组件,多线程渲染,等。使其成为事实上非常糟糕的recyclerview项组件。我的意思是,由于创建自定义视图和应用程序更新的现实世界时间限制以及它提供的灵活性,有些情况下它更可取。我的意思是,有些情况下,由于创建自定义视图和应用程序更新的现实世界时间限制,它更可取卡斯托