Android:为什么我看不到从网站上获取的ListView项目?

时间:2018-03-17 15:56:14

标签: android listview jsoup

我为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个项目。我很确定ForumContentListView工作得非常好。因为如果我这样尝试,我可以看到_forumContents.add(new ForumContent("Data1", "Data2", "Data3", "Data4", "Data5", "Data6")); 项:

JSoup

而且我非常确定我的ListView代码,因为我可以在Java控制台应用程序上使用相同的代码获得相同的数据。
问题是什么?如何查看从网站获取数据的{{1}}项?

1 个答案:

答案 0 :(得分:1)

看看你正在做什么,你在新线程中抓取你的内容。但是您已经在主线程中立即创建了适配器。所以,基本上你的适配器已经设置好了,但是你的应用仍在忙着在后台抓取。

你可以让你的行&#34;可见&#34;通过调用适配器上的notifyDataSetChanged()