我为public class MainActivity extends AppCompatActivity
{
private static final String WEBSITE_URL = "http://www.anywebsite.com/forum/";
private ListView _lvForums;
private ForumAdapter _forumAdapter;
private List<ForumContent> _forumContents;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
//_lvForums = findViewById(R.id.lvForums);
_lvForums = new ListView(this);
_lvForums.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
_forumContents = new ArrayList<>();
setContentView(_lvForums);
new Thread(new Runnable() {
@Override
public void run() {
try {
Document doc = Jsoup.connect(WEBSITE_URL).get();
//MainActivity.this.getActionBar().setTitle(doc.title());
Elements forumContents = doc.select("div.forum_content.forum_forum");
for (Element forum : forumContents) {
String forumName = forum.select("span.name > a").text();
String link = forum.select("span.name > a").attr("abs:href");
String threadCount = forum.select("td.threadcount").text();
String postCount = forum.select("td.postcount").text();
Element lastPost = forum.select("td.lastpost").first();
Element linkElement = lastPost.getElementsByTag("a").first();
String lastPostText = lastPost.childNode(0).toString();
String lastPostLink = linkElement.attr("abs:href");
_forumContents.add(new ForumContent(
forumName, link, threadCount, postCount, lastPostText, lastPostLink));
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
runOnUiThread(new Runnable() {
@Override
public void run() {
_forumAdapter = new ForumAdapter(MainActivity.this, _forumContents);
_lvForums.setAdapter(_forumAdapter);
}
});
}
}
编写了这个Java代码:
Android
当我在ListView
上运行应用时,我看到一个空的白色屏幕,但我看不到ForumAdapter
个项目。我很确定ForumContent
和ListView
工作得非常好。因为如果我这样尝试,我可以看到_forumContents.add(new ForumContent("Data1", "Data2", "Data3", "Data4", "Data5", "Data6"));
项:
JSoup
而且我非常确定我的ListView
代码,因为我可以在Java控制台应用程序上使用相同的代码获得相同的数据。
问题是什么?如何查看从网站获取数据的{{1}}项?
答案 0 :(得分:1)
看看你正在做什么,你在新线程中抓取你的内容。但是您已经在主线程中立即创建了适配器。所以,基本上你的适配器已经设置好了,但是你的应用仍在忙着在后台抓取。
你可以让你的行&#34;可见&#34;通过调用适配器上的notifyDataSetChanged()
。