我正在使用jsoup
抓取一些Web数据,并且可以以不同的方式获取链接和文本。我想使用我获取的链接为这些文本创建超链接。我是Android开发的新手,所以我不知道如何实现它或确切寻找什么。
下面是我尝试过的示例代码:
private void getWebsite(){
new Thread(new Runnable(){
@Override
public void run() {
final StringBuilder builder = new StringBuilder();
try{
Document doc =
Jsoup.connect("https://www.wikipedia.org/").get();
String title = doc.title();
Elements links = doc.select("a[href]");
builder.append(title).append("\n");
for(Element link : links){
builder.append("\n").append("Link:
").append(link.attr("href"))
.append("\n").append("Text:
").append(link.text());
}
} catch (IOException e){
builder.append("Error").append(e.getMessage()).append("\n");
}
runOnUiThread(new Runnable() {
@Override
public void run() {
textView.setText(builder.toString());
}
});
}
}).start();
}
我希望文本可点击,它应该重定向到应用程序的链接。
答案 0 :(得分:0)
要链接TextView
中的文本链接URL,请使用SpannableStringBuilder而不是常规的StringBuilder
,并为每个可点击的内容设置URLSpan:
final SpannableStringBuilder builder = new SpannableStringBuilder();
...
for (Element link : links) {
final String url = link.attr("href");
builder.
....
.append("Link: ")
.append(url, new URLSpan(url), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
.append("\n")
...
}
和结局
textView.setText(builder);
textView.setMovementMethod(LinkMovementMethod.getInstance());