0

我有一个带有 listView 的活动。listView 包含跨区项目。

@Override
protected void onStart() {
    super.onStart();

    Spanned xxx = Html.fromHtml(getString(R.string.xxx));
    Spanned yyy = Html.fromHtml(getString(R.string.yyy));
    Spanned zzz = Html.fromHtml(getString(R.string.zzz));
    ...

    Spanned abc[] = { xxx, yyy, zzz, ... };

    abc_adapter = new ArrayAdapter<Spanned>(this, R.layout.abc, R.id.abc, abc);
    abc_view.setAdapter(abc_adapter);

由于我有 200 个跨越项目,因此应用程序变得非常慢。是否有可能在这里使用线程来提高性能?就像获取线程中跨区项目的格式一样?

4

1 回答 1

0

如果您要先加载所有项目然后再显示它们,线程不会有帮助(很多) - 初始化仍然需要很长时间。在单独的线程上执行此操作的唯一方法是响应能力,因为您将加载从 UI 线程中移开。

要真正加快速度,您应该考虑实现自己的适配器,例如通过扩展ArrayAdapter. 在该getView()方法中,您将执行Html.fromHtml(stringData[position]);并将 textview 项目的内容设置为结果Spannable。这确实需要您将所有字符串都放在一个数组中。那里有很多例子

这样做的好处是您不必fromHtml在初始化时执行所有操作,而是由适配器动态执行。

祝你好运!

于 2013-08-02T23:00:54.550 回答