因此,我正在使用Jsoup进行Web抓取。我可以从网上抓取数据,但是,问题是我分别得到了链接和文本。我希望这些链接设置在我的文本中。我正在使用SpannableStringBuilder,所以有很多链接和很多文本。所以当我是android开发新手时,我不知道该如何解决这个问题。
private void getWebsite() {
new Thread(new Runnable() {
@Override
public void run() {
final SpannableStringBuilder
builder = new SpannableStringBuilder();
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) {
final String url = link.attr("href");
builder.append("\n")
.append("Link: ")
.append(url, new URLSpan(url),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
.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());
textView.setMovementMethod
(LinkMovementMethod.getInstance());
}
});
}
}).start();}
我正在得到这种格式的输出。
链接://en.wikipedia.org /
文本:英语5678 000多篇文章
链接://ja.wikipedia.org /
文本:日本语1112 000多个记事本
链接://es.wikipedia.org /
文本:Español1 430 000+artículos ...... ......
我想要类似这种格式的输出,
**文本:英语5678 000多篇文章**, 在那行内,我想 加入这个连结 **链接://en.wikipedia.org/** 作为超链接或某种方式,以便我可以单击此文本并直接像在MS Word中一样直接转到网页。
答案 0 :(得分:1)
您正在寻找使用HTML设置文本值的方法。 Here is the documentation,下面是一些示例代码:
import 'reflect-metadata';
import { injectable, inject, Container, unmanaged } from 'inversify';
const container = new Container();
const registerProviders = (...providers: any[]) =>
providers.forEach(provider => container.bind(provider.name).to(provider));
const getProvider = (provider): any => container.get(provider.name);
@injectable()
export class MessageBroker {
start = () => console.log('init message broker');
}
@injectable()
export abstract class Repository {
@inject(MessageBroker.name) private mb: MessageBroker;
constructor(@unmanaged() protected readonly user: any) {}
// this.mb is undefined
initialize = () => this.mb.start();
}
@injectable()
export class UserRepository extends Repository {
constructor() {
super({ user: 'some object' });
this.initialize();
}
}
registerProviders(UserRepository, Repository, MessageBroker);
const repo: UserRepository = getProvider(UserRepository);
您可以在其中使用HTML设置值。您还可以更新颜色,粗体,斜体等,只要您使用HTML属性即可。