TLDR:
我正在设置myListView.setVisibility(View.GONE);
,但直到稍后它才会消失......我是否需要让它知道我已经改变了它的可见性?或者我是否还需要隐藏它的内在元素或什么?
问题描述:
我有一个普通的新闻应用。您会看到“主要”部分的文章列表,然后您可以单击选项以选择新部分。
当用户点击时,部分标题发生了变化,但是列表中的文章只会放在“旧”内容中,直到加载新内容为止,然后它会闪现到新内容。
这显然不太理想。我希望列表消失,显示加载动画,然后,在检索到新数据后(从数据库或在线,然后是数据库),它会显示新内容。
我发现this SO question似乎是我想要的,但是......
我在选择菜单后立即设置GONE,然后在导入文章并加载新文章后可见...但在此期间它根本没有消失。我知道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);
}
ADDITION:这是我的importAricles()代码:http://pastebin.com/8j6JZBej
答案 0 :(得分:0)
您必须在对其外观进行更改时使视图无效,因此请在设置可见性后调用articleEntryListView.invalidate()
。