Android在Textview中解析来自JSONArray的网址并使其可以点击

时间:2013-02-23 14:01:56

标签: android json hyperlink clickable

我目前正在我的Android应用程序中解析JSON(注意我对这些东西很新;同时是android和JSON)。现在我得到了一个JSONObject,在这个对象里面有一个JSONArray,里面有链接(字符串)。 我希望将这些链接放在Textview中的数组中,并使它们也可以点击。

使用Log.w我可以检索以下输出:

<a href="http://xxxx.xx/xxxx/test.xlsx">test.xlsx</a>

URL似乎有效,但我尝试使它们实际上成为链接的所有内容似乎都失败了。 这是我用来检索链接的代码:

ArrayList<String> map; //note it's already filled and contains strings like the example
sb = new StringBuilder("Items in map:\n\n");
    for(int i=0;i<map.size();i++){
        sb.append(Html.fromHtml("&#8226; " + map.get(i) + "<br/>"));
    }

现在我&#34;空&#34; stringbuilder进入我的TextView:

   TextView overView= (TextView)findViewById(R.id.textOverView);
    overView.setText(sb.toString());
    //make links clickable?
    overView.setMovementMethod(LinkMovementMethod.getInstance());

我还尝试使用Linkify,android:可点击属性,url编码器等等,但遗憾的是似乎没有任何效果。如果我删除setMoveMent方法,链接甚至不是蓝色(更不用说可点击),所有其他方法也是如此。

欢迎任何想法!

1 个答案:

答案 0 :(得分:1)

MovementMethod使链接可点击并可选择。但是,您需要首先将ClickableSpan个实例附加到您的文本中,以便MovementMethod可以正常工作。这是由Linkify完成的,而MovementMethod只是为了可以在大量文本中进行选择。我想你要求的是这个,

android:autoLink="all"
android:linksClickable="true"

这只是将textview链接到ClickableSpan个实例所识别的所有链接,并设置正确的MovementMethod