【发布时间】:2017-03-08 03:58:30
【问题描述】:
我想从网页中获取 HTML,从代码中删除一些标签并使用 TextView 显示它...但是这些 HTML 太大而无法暂时存储到字符串中...
当我尝试这种方式时:
String html = "myBigHTML";
myTextView.setText(fromHtml(html));
编译器说error: constant string too long
如果我将 html 放入 .txt 并尝试这种方式:
InputStream is = getAssets().open("html.txt");
tvTeste.setText(fromHtml(convertStreamToString(is)));
public static String convertStreamToString(InputStream is) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");
}
reader.close();
return sb.toString();
}
它可以工作,但应用程序变得太慢了,几乎死机......而且,如果我将它存储在 .txt 中,我无法使用标签......
.:: 编辑 ::.
我的onCreate()方法被问到...
private TextView tvTeste;
private InputStream is;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_frequencia);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
tvTeste = (TextView)findViewById(R.id.tvTeste);
try {
is = getAssets().open("html.txt");
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String strLine;
List<String> stringList = new ArrayList<>();
try {
while ((strLine = br.readLine()) != null) {
stringList.add(strLine);
}
} catch (Exception e) {
e.printStackTrace();
}
tvTeste.setText(fromHtml(TextUtils.join("",stringList)));
}
【问题讨论】:
-
除了接受的答案之外,您还可以找到替代解决方案here