【问题标题】:Listview with webview带有 web 视图的列表视图
【发布时间】:2011-12-10 12:39:50
【问题描述】:

我正在尝试创建一个内部带有 Webview 的 ListView,但应用程序没有显示任何内容。 这是我的代码:

我设置 CustomAdapter 的 MainActivity

    public class Web_in_list1Activity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

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

    lv.setAdapter(adapter);

    }
    }

CustomAdapter 的getView 在这里,我得到了 ListView 的布局和 Webview 的 URL

    public View getView(int arg0, View convertView, ViewGroup arg2) {
    // TODO Auto-generated method stub

    LayoutInflater inflater =  context.getLayoutInflater();
    convertView = inflater.inflate(R.layout.listitem, null);

    WebView wv = (WebView)convertView.findViewById(R.id.webview);
    wv.getSettings().setJavaScriptEnabled(true);
            wv.loadUrl("http://www.google.com");

            convertView.setTag(wv);

    return convertView;
}

main.xml

     <?xml version="1.0" encoding="utf-8"?>

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

    <ListView
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_height="fill_parent"
            android:id="@+id/listView2"
            android:layout_width="fill_parent"/>
     </LinearLayout>

listitem.xml

    <?xml version="1.0" encoding="utf-8"?>

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


    <WebView  

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

关闭! 用滚动视图解决的问题

【问题讨论】:

  • 我觉得这是一种更有创意的电池放电方式。 :D (但遗憾的是我不明白为什么它在这里不起作用)
  • 哈哈好感觉:D不认真...我尝试制作一个webview,我可以在其中添加一个View,它随着WebView的内容滚动,所以我尝试制作一个带有标题的列表视图...另一个想法如何解决我的问题?
  • 有人有想法吗?请帮忙。
  • 好的问题解决了...我使用了滚动视图!
  • 如果列表这么长,我认为滚动视图不是解决方案:)。因为 ListView 是为提高内存效率而设计的,所以列表项的视图只用于可见的。

标签: android android-listview android-webview


【解决方案1】:

我正在尝试创建一个内部带有 Webview 的 ListView

你不能可靠地将可滚动的东西放在其他可滚动的东西中。因此,您不能可靠地:

  • WebView 放在ListView 行中
  • ScrollView 放在ListView 行中
  • WebView 放入ScrollView
  • ListView 放入ScrollView

此外,WebView 是一个非常重量级的小部件,它的设计目的不是让大量副本漂浮在各处。请考虑使用TextView 进行轻量级 HTML 渲染。

【讨论】:

  • GMail 应用程序是如何做到的?您是说他们根本没有任何本机控件吗? stackoverflow.com/questions/8301246/…
  • @Enigma:您可以考虑阅读您链接到的问题和答案,因为它回答了您的问题。
  • @CommonsWare - 从性能的角度来看,您对在较新的 RecyclerViews 中使用 WebViews 有何看法?尽管 WebView 是重型组件,但它们将成为 Holders 的一部分,可以重复使用。
  • @Chebyr:scrollable things 中关于scrollable things 的问题可能仍然是个问题,这取决于WebView 中的内容和RecyclerView 的滚动方向。关于重量的问题将取决于有多少WebViews 可能是可见的或缓存的。因此,例如,使用RecyclerViewPager(基于RecyclerViewViewPager 替换)和WebViews 可能是可以的,因为它们将具有垂直滚动/滑动和很少WebViews。不过,包含大量 WebViews 的垂直列表可能仍然很麻烦。
  • CommonsWare 解决方案可能在 5 年前就已经有效,但现在肯定不再适用了。我和其他许多人都可以将 webviews 嵌入到 listviews 或其他可滚动容器中。
【解决方案2】:

试试这个代码,它对我有用。

public View getView(final int position, View view, ViewGroup parent) {
        String Vurl = "your URL";
        ViewHolder holder;

        mHandler = new Handler();
        if (view == null) {
            holder = new ViewHolder();

            view = mInflater.inflate(R.layout.listitem, null);


            holder.browser = (WebView) view.findViewById(R.id.webview);

            view.setTag(holder);
        } else
            holder = (ViewHolder) view.getTag();

        holder.browser.getSettings().setJavaScriptEnabled(true);
        holder.browser.getSettings().setPluginState(WebSettings.PluginState.ON);

        holder.browser.loadUrl(Vurl);
        holder.browser.setScrollBarStyle(View.SCROLLBARS_INSIDE_INSET);


        return view;

    }

    class ViewHolder {
        WebView browser;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    相关资源
    最近更新 更多