SLaks 2013-04-07 03:30 采纳率: 0%
浏览 1182

Android 中ListView 的 Alphabet Indexer滞后问题

在程序中使用CustomCursorAdapter来创建section headers。我从ListView 行中移除所有的图像,但是滚动还是相当的滞后。有谁知道用什么方法来优化吗?

public View getView(int position, View convertView, ViewGroup parent) {
    final int type = getItemViewType(position);
    if (type == TYPE_HEADER) {
        if (convertView == null) {
            final LayoutInflater inflater = LayoutInflater.from(context);
            convertView = inflater.inflate(R.layout.list_header, parent,
                    false);
        }
        ((TextView) convertView.findViewById(R.id.list_header_title))
                .setText((String) getSections()[getSectionForPosition(position)]);
        return convertView;
    } else {
        View v = super.getView(
                position
                        - sectionToOffset
                                .get(getSectionForPosition(position)) - 1,
                convertView, parent);
        int contactIdCol = c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID);
        String contactId_text = c.getString(contactIdCol);
        boolean flag = db.isRegistered(contactId_text);

        ImageView iv = (ImageView) v.findViewById(R.id.typeImage);
        if (flag) {
            iv.setImageResource(R.drawable.rocket);
        } else {

            iv.setMinimumHeight(Config.getIconSize(context));
            iv.setMinimumWidth(Config.getIconSize(context));
            iv.setImageDrawable(null);
        }
        ImageView iv1 = (ImageView) v.findViewById(R.id.test);
        cl.displayImage(contactId_text, iv1);
        return v;
    }
}
  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2022-12-20 18:44
    关注

    ChatGPT尝试为您解答,仅供参考
    有几个方法可以优化 ListView 的性能:

    • 使用复用视图:您应该使用 convertView 来复用视图,这样可以减少内存占用并减少布局加载的时间。
    • 使用视图绑定:您可以使用视图绑定来优化视图创建的性能。视图绑定是一种将数据绑定到视图的技术,可以通过在每个视图中缓存绑定数据来减少 findViewById() 调用的次数。
    • 使用常量大小的视图:您应该使用常量大小的视图,这样 ListView 就可以使用缓存来更快地滚动。
    • 减少布局嵌套:尽量减少布局嵌套,因为这会导致布局的加载时间变慢。
    • 延迟加载图像:如果您使用图像,请考虑使用图像加载库(如 Glide 或 Picasso)来延迟加载图像,这样可以减少初始加载时间。

    您可以尝试使用上述方法来优化您的 CustomCursorAdapter。

    评论

报告相同问题?

悬赏问题

  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作