ListView优化:字体使listview非常滞后

Jan*_*ela 2 android listview typeface

在过去的几个小时里,我正在浏览一些listview优化但是我没有成功解决我的滞后列表视图,所以从行到行我开始将我的代码恢复到更早和更简单的版本来找出问题.因此,我使用包含imageview和两个textview的customadapter填充listview.从项目中删除图像后,我的列表视图仍然很慢,然后猜测:如果我删除textviews的自定义字体,我的lagginess消失了.我使用简单的Calibri,这是一个内置字体,所以我不明白为什么它减慢了我的listview.有什么建议可以解决这个问题吗?

//viewHolder.text_tt.setTypeface(Typeface.createFromAsset(getActivity().getAssets(), "fonts/CALIBRI.TTF")); 
//viewHolder.text_ttd.setTypeface(Typeface.createFromAsset(getActivity().getAssets(), "fonts/CALIBRI.TTF")); 

viewHolder.text_tt.setText(textNames[position]);
viewHolder.text_ttd.setText("Item " + position);
Run Code Online (Sandbox Code Playgroud)

Vin*_*noy 10

原因是因为从资产创建字体非常繁重.我喜欢像这样使用TypefaceCache ..

public class TypefaceCache {

    private static final Hashtable<String, Typeface> CACHE = new Hashtable<String, Typeface>();

    public static Typeface get(AssetManager manager, String name) {
        synchronized (CACHE) {

            if (!CACHE.containsKey(name)) {
                Typeface t = Typeface.createFromAsset(manager, name);
                CACHE.put(name, t);
            }
            return CACHE.get(name);
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

这样,Typeface只会创建一次,不需要每次都重新创建.

请记住添加一个检查以在name参数为nullTypeface.createFromAsset返回时返回默认的Typeface null.