为什么滚动时ListView中的链接会丢失?从调试中可以清楚地看到,转换不会在convertView的TextView上第二次添加.
...
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()更新文本,就像您可能已经在做的那样.