2010-10-30 95 views
1

我有一个使用TextView的工作android应用程序,一些格式(换行符,破折的行)和Linkify生成一个原始的“ListView样”显示与每个“行”中的可点击的网址。我想转向一个真正的ListView,但我只是没有找到我需要采取下一步的示例/解释。Android概念帮助ListView

我已成功复制了HelloListView sample,从硬编码字符串数组开始,然后移动到我的res/values/strings.xml中定义的字符串数组。我通过添加HttpClient代码从服务中检索一组数据,将结果解析为一个String数组并将其提供给setListAdapter(),使得我的文本和链接显示为文本 - 仅在ListView项目中。

我想移动到下一个步骤,是使我的ListView每个“行”启动浏览器中包含的数据的URL,或者通过 (A)单击行中的任意位置,或 (B )单击行数据中显示的超链接

对于选项(A),看起来我需要让我的onItemClick()方法发出一个启动浏览器的意图。这很简单,但我不知道如何将URL与项目相关联(目前它只是每个“行”文本的字符串内容的一部分)。如何将我的URL与其余文本分开,以便我可以将浏览器启动到相应的URL?我是否需要用自定义对象数组来替换我的String Array?

对于选项(B),我可以使用Linkify吗?看起来,我的字符串数组元素被转换为单独的TextViews(从HelloListView示例中生成Toast文本的方式推断)。我可以访问该TextView来运行Linkify吗?我是否需要用TextView数组替换我的String Array并自己运行Linkify?我完全脱离基地吗?

感谢任何人可以帮助解释我想要做什么,以帮助找到我的方式在SDK,样本和其他帮助!

+0

或者我应该看看选项(C),这将是在列表视图中的点击启动一个新的全屏幕TextView,我可以使用linkify显示任意数量的超链接。 (这是我认为我在新闻应用和社交网络应用中看到的模式)。现在查看关于该模式的示例,以及如何将内容从单击的列表视图项移到可应用Linkify的通用基于TextView的类。 – jeffonc 2010-10-30 18:24:10

+0

得到了一个选项(C),它使用一个intent,一个设置简单TextView的类,以及通过使用Bundle和Intent.putExtras()发送this.getIntent()将ListView行的内容传递给TextView。 getExtras()来接收。 (A)和(B)将针对CommonsWare的一些建议进行研究。 – jeffonc 2010-10-30 23:53:14

回答

0

如何将我的URL与其余文本分开,以便我可以将浏览器启动到相应的URL?

使用正则表达式(java.util.regex)来查找URL。

对于选项(B),我可以使用Linkify吗?

是。

我可以访问该TextView来运行Linkify吗?

是。在您的ArrayAdapter中覆盖getView()。链接到超类,并从super.getView()的结果中获得TextView

更好的方法是先将字符串Linkify放入数组中,然后再放入数组中。

我是否需要将我的String Array替换为TextView Array并自己运行Linkify?

不,这真的不是一个好主意。以下是我的一本书中的free excerpt,其中详细介绍了定制ListView的各个行的情况,以防万一。

+0

非常感谢,特别是摘录! – jeffonc 2010-10-30 23:35:07

+0

**正则表达式建议在我的第一个示例中是可行的 - 对于其他可能存在多个链接的情况,或者您可能不希望在ListView中显示链接,可能不具有可扩展性。 **我没有意识到我可以Linkify一个字符串,将它填充到一个字符串数组中,填入ListView中,并在显示时保留Linkify-cation。将不得不玩这个。 **摘录正是我期待的那种概念性描述。再次感谢! – jeffonc 2010-10-30 23:47:18