我有一个使用TextView的工作Android应用程序,一些格式化(换行符,破折行)和Linkify生成一个原始的“ListView-like”显示,每个“行”中都有可点击的URL。我想升级到一个真正的ListView,但我只是没有找到我需要采取下一步的示例/解释。
我已成功复制HelloListView sample,从硬编码字符串数组开始,然后移动到我res/values/strings.xml
中定义的字符串数组。通过添加我的HttpClient代码从服务中检索一组数据,将结果解析为一个字符串数组并将其提供给setListAdapter(),使我的文本和链接显示为文本 - 我向我的目标迈出了一小步仅限ListView项目。
我想转到下一步,即在我的ListView中使每个“行”启动浏览器到数据中包含的URL,或者通过 (A)单击行中的任意位置,或 (B)单击行数据中显示的超链接
对于选项(A),似乎我需要让我的onItemClick()方法发出启动浏览器的意图。这很简单,但我不知道如何将URL与项目相关联(目前它只是文本的每个“行”的字符串内容的一部分)。如何将URL与文本的其余部分分开,以便我可以将浏览器启动到相应的URL?我是否需要用自定义对象数组替换我的String数组?
对于选项(B),我可以使用Linkify吗?似乎我的字符串数组元素被转换为单独的TextViews(从HelloListView示例中生成Toast文本的方式推断)。我是否可以访问该TextView以运行Linkify?我是否需要用TextView数组替换我的String数组并自己运行Linkify?我完全偏离了基地吗?
感谢所有能帮助向我解释我正在尝试做的事情的人,以一种有助于找到我的方式来解决SDK,样本和其他帮助的方式!
答案 0 :(得分:0)
如何将网址与文本的其余部分分开,以便我可以将浏览器启动到相应的网址?
使用正则表达式(java.util.regex
)查找网址。
对于选项(B),我可以使用Linkify吗?
是
我是否可以访问该TextView以运行Linkify?
是。覆盖getView()
中的ArrayAdapter
。链接到超类,并从TextView
的结果中获取super.getView()
。
更好的方法是先在字符串上使用Linkify
,然后再将它们放入数组中。
我是否需要用TextView数组替换我的String Array并自己运行Linkify?
不,这真的不是一个好主意。以下是我的一本书中的free excerpt,其中详细介绍了ListView
的各个行的定制,以防万一。