1

我正在尝试创建一个包含 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)。我遇到了这个问题,在其中包含 HTML 数据的列表中使用 WebView 或 TextView 哪个?和@CommonsWare 建议这是不可能的。有没有办法做到这一点?

4

1 回答 1

0

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

抱歉,我的错误是我将数组列表加载到 for 所以它乘以 5

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

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

HttpClient 客户端 = 新 DefaultHttpClient(); HttpGet 请求 = 新的 HttpGet(url); HttpResponse 响应 = 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));
于 2014-01-15T16:00:13.927 回答