【问题标题】:WebView Items in a ListViewListView 中的 WebView 项
【发布时间】:2014-01-15 13:18:23
【问题描述】:

我正在尝试创建一个包含 Webview 的 ListView。 webview 每次都被不同的 url 加载

@Override
public View getView(int position, View convertView, ViewGroup parent)
{

    View rowView = convertView;
    if (rowView == null)
    {

        // res = getLayoutInflater().inflate(R.layout.item_composer, null);
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        rowView = inflater.inflate(R.layout.card, parent, false);

        ViewHolder holder = new ViewHolder();

        holder.webview = (WebView) rowView.findViewById(R.id.card_webview);
        holder.webview.getSettings().setJavaScriptEnabled(true);

        holder.webview.setWebViewClient(new WebViewClient());

        rowView.setTag(holder);

    }

    ViewHolder holder = (ViewHolder) rowView.getTag();

    holder.webview.loadUrl(cardList.get(position).getUrl());//loading webview with URL




    return rowView;
}

我成功地实现了它,但它表现得很奇怪(webview 并不总是加载正确的 url)。我遇到了这个问题Which one to use WebView or TextView in a list with HTML data in it? 和@CommonsWare 建议这是不可能的。有没有办法做到这一点?

【问题讨论】:

  • 你能形容“很奇怪”吗?我认为“非常奇怪”的话题是正确的问题?
  • 我添加到描述中。滚动列表视图时,它并不总是加载正确的 url,它们似乎被混淆了......
  • 很抱歉问这个问题,但是您是否在没有 webview 的情况下测试了您的代码?尝试使用您使用的相同逻辑为每个项目设置不同的背景颜色,我将在 30 分钟内测试您的代码。如果你可以等:)
  • 对不起,我将数组列表加载到 for 所以它乘以 5
  • CommonsWare 为什么建议不要在 ListView 中使用 WebView?

标签: android android-listview android-webview android-websettings


【解决方案1】:

用户已经在 cmets 中找到了我们讨论的解决方案:

对不起,我把数组列表加载到了 for 所以它乘以 5

这个答案出现在最后一条评论中,用户询问他如何在 TextView 上显示 HTML 页面。

首先你需要在一个字符串上加载 HTML,你可以使用 AsyncTask 和类似的东西来做到这一点:

HttpClient 客户端 = new DefaultHttpClient(); HttpGet 请求 = 新的 HttpGet(url); HttpResponse response = client.execute(request);

String html = "";
InputStream in = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder str = new StringBuilder();
String line = null;
while((line = reader.readLine()) != null)
{
    str.append(line);
}
in.close();
html = str.toString();

然后你需要在你的 TextView 上设置 HTML,记得在 UI 线程上做。

textView.setText(Html.fromHtml(html));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多