- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
为什么 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()
使用 MyCustomSpan
和扩展 URLSpan
创建一个 SpannableString
。
问题是,当我在 ListView
中上下滚动时,链接丢失了。而当屏幕第一次打开时,它设置正确。
现在我通过禁用 convertView
的重用做了一个肮脏的修复 :( 有什么想法可以更好地解决这个问题吗?
最佳答案
当 textview 的数据被写入包裹以保留时,一些可跨越的信息可能会丢失。
参见 TextView.onSaveInstanceState() , TextView.onRestoreInstanceState() , 和 TextView.SavedState .
确定 android 将保留和不保留的内容通常会非常令人沮丧。我通常只是在我的 View 中使用 setSaveEnabled(false)
来禁用基本小部件不可预测的默认行为。
此外,viewholder 模式仅真正用于保留 View /布局实例层次结构。为了让您不必在每次 getView()
时膨胀或查找您的 View 。从 getView()
呈现 View 时,更新 View 数据始终是您的责任。
您不需要完全禁用 viewholder 模式,只需在每次 getView()
时更新文本,就像您可能已经在做的那样。
关于android - 链接范围从 ListView 的 convertView 中丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21183448/
上下文 我想要一个包含 3 种截然不同的列表项布局的列表,因此我使我的适配器根据要显示的项目类型创建适当的 View 。 例如我想列出一些图像、文本和数字,每个都有一些标题。我知道在 public V
文章中Multithreading For Performance来自Android Developer Blog,在Adapter.getItem()中使用convertView来显示通过HttpR
我正在尝试显示具有不同类型行的ListView。我有一个由 Artist、Label、Release 等继承的 Result 抽象类。我从 JSON 响应中获取结果。解析正常,我的工厂成功创建了一些
我正在努力思考 getView(),我认为 Android 中没有任何主题会在 StackOverflow 和其他地方引起更多的困惑和问题。每个人都想知道为什么它被调用了这么多次,以什么顺序调用或者根
我正在使用 fragment 创建一个 ListView,其中填充了 CheckBoxes。我尽力根据其他问题找到解决方案,但我似乎无法修复它。当我不使用以下命令运行脚本时: convertView.
这是我的getView()。 我显然在这里做错了什么,因为我列表的第一项总是没有显示图片。 这里的问题出在 convertview 上,因为如果我不回收它,就没有问题。 请问我做错了什么?? @Ove
我正在制作一个使用 ListView 和列表适配器的应用程序。它工作正常,但我在 getgroupview 方法中发现了内存泄漏。在我每次都膨胀 xml 文件并导致泄漏之前。 groupRow =
我有一个 ListView,其中包含一个 ImageView 和一个 TextView。我将 ArrayAdapter 子类化,以便我可以通过子类化的 AsyncTask 从 Internet 加载图
我正在实现自定义适配器,它根据这个(非常有用的)教程在 listview 中处理多种类型的行:http://logc.at/2011/10/10/handling-listviews-with-mul
我正在使用带有 ImageAdapter 的 Gallery 加载它,并使用 ImageViews 从我的资源中提取图像。我的问题是在我的适配器中传递给 getView() 方法的 convertVi
这是我为 ListView 创建自定义 View 的代码。它使用名为 SquareProgressBar 的自定义 View : package com.example.simpledownloade
在我的自定义 ListAdapter 中,第一次调用 GetView() 时,convertView 作为 NULL 传入,但第二次作为第一次创建的 View 传入。我的 ListView 有 4 行
在android中,我通常使用MyAdapter extends ArrayAdapter来为ListView创建 View ,结果,我不得不重写函数 public View getView(int
我有一个带有 viewList + 自定义适配器的 Activity 。 我想在运行时更新 viewList (当某些资源下载完成时使用回调)。我调用 ui-thread 来调用此方法: pu
你好安卓开发者,我已经阅读了有关 BaseAdapter 的 getView 方法的文档,我的理解是 View 可以重复使用/回收,因此在使用之前应该检查该 View 是否为非空且类型是否合适。在我的
我的问题是,当我滚动 ListView 时,我得到了错误的 convertView,但位置是正确的。 我的 Listview 中有 3 个项目,在加载时使用索引 '0' 调用“position”参数并
我是 Android 开发的新手,正在阅读一些示例代码。我从适配器类(派生自 ArrayAdapter)中的示例代码复制了一个方法,派生类除了 TextView 外还有一个复选框: @Override
假设这是我的代码,我想根据某些条件将 2 个不同的 View 膨胀到 listView。 public View getView(int position, View convertView, Vie
我一直在浏览示例和教程,但我似乎无法理解如何在子类化的 SimpleCursorAdapter 中处理回收。我知道对于常规 ArrayAdapter,您可以检查 convertView 是否为 nul
为什么 ListView 中的链接在滚动时丢失了?从调试中可以清楚地看出,不会在 convertView 的 TextView 上第二次添加跨度。 这是从适配器的 getView 调用的一段代码。
我是一名优秀的程序员,十分优秀!