我有一个带有 TextView 的适配器。TextView 要么包含一个字符串,要么包含一个 SpannableString,这取决于文本是否可点击。但是,我注意到当视图被回收时,有时它会失去点击能力。我认为 SpannableString 再次成为 String 。
有谁知道这是为什么或对如何解决有任何建议?我正在使用 ViewHolder(以防有人想知道)以及 CustomObject(处理要返回的字符串类型)。
@Override
public View getView(int pos, View view, ViewGroup viewGroup) {
final ViewHolder tag;
if (view == null) {
view = mInflater.inflate(R.layout.custom_layout, viewGroup, false);
tag = new ViewHolder(
(ImageView) view.findViewById(R.id.imageView1),
(TextView) view.findViewById(R.id.textView1),
(TextView) view.findViewById(R.id.textView2),
mItems.get(pos));
view.setTag(tag);
} else {
tag = (ViewHolder) view.getTag();
}
tag.item = mItems.get(pos);
tag.tv1.setText(tag.item.getName());
tag.tv2.setText(tag.item.getMsg());
return view;
}
private final class ViewHolder {
private final TextView tv1, tv2;
private final ImageView iv;
private CustomObject item;
public ViewHolder (ImageView iv, TextView tv1, TextView tv2, CustomObject item) {
this.iv = iv;
this.tv1 = tv1;
this.tv2 = tv2;
this.item = item;
}
}
~~编辑~~
事实证明,问题在于我如何解析链接的字符串。我检查了多个链接的字符串,并且我有一个标志,根据它是否已到达字符串的末尾来检查它。当视图被回收时,该标志仍然设置为完成,因此它没有重新格式化(尽管在我的 CustomObject 中存储为最终处理的 SpannableString 对象)。现在我将其设置为重置标志,以便在必要时再次处理。不知道为什么它需要重新处理一些时间。