TLDR:
我正在设置myListView.setVisibility(View.GONE);
,但它直到稍后才消失......我是否需要以某种方式让它知道我已经改变了它的可见性?或者我是否还需要隐藏它的内部元素或其他东西?
问题描述:
我有一个普通的新闻应用程序。您会看到“主要”部分的文章列表,然后您可以单击选项以选择新部分。
当用户单击时,部分标题发生了变化,但列表中的文章将与“旧”内容一起坐在那里,直到加载新内容,然后它会闪烁到新内容。
这显然并不理想。我希望列表消失,显示加载动画,然后,在检索到新数据(从数据库或在线,然后是数据库)后,它会显示新内容。
我发现这个 SO 问题似乎是我想要的,但是......
我在选择菜单后立即设置 GONE ,然后在导入文章并加载新文章后设置为 VISIBLE ......但在此期间它根本没有消失。我知道 GONE 代码有效,因为如果我删除我的 VISIBLE 代码,文章将永远不会重新出现。
我需要说“View.GONE”,然后告诉它更新它的可见性还是什么?
我的代码(MainActivity):
public static void sectionSelected()
{
String selectedText = sectionsSpinner.getSelectedItem().toString();
String[] selectedSection = Section.stringToSection(selectedText);
//check if it was already the current section
if(!Section.isEqual(Section.currentSection, selectedText))
{
//hides list of articles
articleEntryListView.setVisibility(View.GONE);
//sets new currentSection
Section.currentSection = selectedSection; // Section.stringToSection(sectionsSpinner.getSelectedItem().toString());
//imports articles (if it's been more than an hour since last import)
articlesDataSource.importArticles(Section.currentSection, true, false);
//loads article from database to the list
loadArticlesIntoList(Section.currentSection);
}
}
public static void loadArticlesIntoList(String[] section)
{
//clears the list
//articleEntryAdapter.clear(); //don't think I need this now that I'm just going to hide it
//articleEntryAdapter.notifyDataSetChanged();
//POPULATES THE LIST OF ARTICLES, THROUGH THE ADAPTER
for(final Article a1 : articlesDataSource.getArticles(section))
{
articleEntryAdapter.add(a1);
}
articleEntryAdapter.notifyDataSetChanged();
//shows list of articles
articleEntryListView.setVisibility(View.VISIBLE);
}
补充:这是我的 importAricles() 代码:http ://pastebin.com/8j6JZBej