gpt4 book ai didi

android - 性能问题 - ListView、TextView,每个子项中都有一个 Spanned 输入

转载 作者:行者123 更新时间:2023-11-30 04:42:32 25 4
gpt4 key购买 nike

目前我在每个 child 中都有一个带有 TextView 的 ListView。该 TextView 正在接受一个 Spanned 字符串来填充它。我使用的是 ViewHolder 模式,我没有在 getView() 中解析 Spanned 字符串。当我从 Spanned 字符串切换回纯字符串时,ListView 的滚动性能显着提高。我想继续使用 Spanned,因为它会即时正确地格式化我的文本。

他们是提高我的 ListView 性能同时保持我的 TextViews 跨越的字符串输入的方法吗?

@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
final ViewHolder holder;

if (convertView == null) {
convertView = inflater.inflate(R.layout.comment, null);

holder = new ViewHolder();
holder.userName = (TextView) convertView.findViewById(R.id.comment_user_name);
holder.date = (TextView) convertView.findViewById(R.id.comment_created_date);
holder.body = (TextView) convertView.findViewById(R.id.comment_body);

convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}

User user = array.get(position).getCreatedBy();
holder.userName.setText(user.getName());
holder.date.setText(array.get(position).getDateCreated());
holder.body.setText(array.get(position).getBody());

return convertView;
}

最佳答案

虽然我没有找出问题的原因,但我确实找到了解决上述问题的解决方法。

调用 getBody() 返回一个 Spanned getView() 的每次迭代都会导致异常数量的垃圾收集的对象。当我将 Spanned 转换为 String 时,问题就消失了。这是我为解决问题而修改的代码。

holder.body.setText(array.get(position).getBody()**.toString()**);

虽然我仍然想找到一个确凿的理由来解释为什么会发生这种情况。

关于android - 性能问题 - ListView、TextView,每个子项中都有一个 Spanned 输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5706018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com