android – 链接跨度从ListView的convertView中丢失

前端之家收集整理的这篇文章主要介绍了android – 链接跨度从ListView的convertView中丢失前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

为什么滚动时ListView中的链接会丢失?从调试中可以清楚地看到,转换不会在convertView的TextView上第二次添加.

这是从适配器的getView调用的一段代码.

    ...
    String body = MyItemDetails.getBody(); // String to linkify

    final Spannable spannable = MyCustomUri.addHashtagSpans(context,body);
    viewHolder.textView.setText(spannable);

    viewHolder.textView.setTextIsSelectable(true); // adds additional spans
    viewHolder.textView.setMovementMethod(ArrowKeyMovementMethod.getInstance());
    viewHolder.textView.setAutoLinkMask(Linkify.WEB_URLS);
    ...

MyCustomUri.addHashtagSpans()使用扩展URLSpan创建带有MyCustomSpan的SpannableString.

问题是当我在ListView链接中上下滚动时丢失.而当屏幕第一次打开时,它设置正确.

现在我通过禁用convertView的重用做了一个脏修复:(任何想法如何更好地解决这个问题?

最佳答案
当textview的数据写入包裹以进行保留时,某些可跨越的信息可能会丢失.

TextView.onSaveInstanceState(),TextView.onRestoreInstanceState()TextView.SavedState.

确定android将保留和不保留的内容通常会非常令人沮丧.我经常在我的视图上设置setSaveEnabled(false)来禁用基本小部件的不可预测的默认行为.

此外,视图模式仅用于保留视图/布局实例层次结构.为了避免每次getView()需要充气或查找视图.在从getView()呈现视图时,更新视图的数据始终是您的责任.

您不需要完全禁用视图模式,而只是简单地每次getView()更新文本,就像您可能已经在做的那样.

猜你在找的Android相关文章