0

我有一個listView的活動。 listView包含Spanned項目。使用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個項目橫跨應用變得非常緩慢。有沒有可能使用線程來提高性能? 就像獲取線程中Spanned項目的格式一樣?

+0

什麼是慢?初始化?或者滾動=適配器? – Malachiasz

+0

初始化。 – user1337

+0

然後是的你可以在線程上運行它,但是請注意,在數組初始化之後setAdapter應該發生。所以你不得不在用戶面前展示一些東西。 – Malachiasz

回答

0

如果您打算先加載所有項目,然後才顯示它們,則線程無法幫助(很多) - 初始化操作仍需要很長時間。唯一在單獨的線程上執行它會讓您在從UI線程執行加載時具有響應能力。

爲了更快地實現這一點,您應該考慮實施您自己的適配器,例如,通過延伸ArrayAdapter。在getView()方法中,您將執行Html.fromHtml(stringData[position]);並將textview項目的內容設置爲生成的Spannable。這確實要求你將所有的字符串放在一個數組中。 那裏有many examples

這樣做的好處是,您不必在初始化時執行所有fromHtml,但它們是由適配器實時執行的。

祝你好運!