TLDR:列表視圖 - 設置View.GONE在菜單選擇不躲立即
我設置myListView.setVisibility(View.GONE);
,但它不是dissappearing直到後來......我需要讓他莫名其妙的是知道我改變了它的可見性?或者我還需要隱藏它的內部元素或什麼?問題
說明:
我有一個正常的新聞應用程序。您會看到「主」部分的文章列表,然後您可以單擊選項來選擇新的部分。
當用戶點擊時,欄目標題發生了變化,但是列表中的文章只會在那裏放置「舊」內容,直到新內容被加載,然後它會閃現到新內容。
這顯然不理想。我希望列表消失,顯示一個加載動畫,然後,在檢索到新數據(從數據庫或在線,然後是數據庫)之後,它會顯示新內容。
我發現this SO question這似乎是我想要的,但...
我設置後立即菜單中選擇其導入的文章和加載新的走了之後,然後可見......但在這期間它並沒有消失。我知道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
'importArticles'中的操作有多快? Android在一次掃描中執行該菜單回調(真正的菜單?),並且'GONE' /'VISIBLE'互相取消,所以你沒有看到任何消失。這與在按鈕的'onClick'回調中嘗試使視圖顯示(它被設置爲不存在)是一樣的,暫停一段時間以模擬一些工作,然後使視圖再次消失。就像你的情況一樣,你不會看到那個視圖(即使是短暫的一段時間)。 – Luksprog 2012-07-19 16:01:02
@Luksprog - 導入文章最多可能需要10秒左右(有時不太確定,但是......一個明顯的時間範圍)。我可以看到我的日誌「現在隱藏」......然後延遲下載/導入文章,然後「顯示現在」。 「菜單」是視圖頂部的微調器。事情是 - 即使我刪除了我的「可見」部分(即它會隱藏,但從不返回),直到導入完成後它纔會消失。 – Dave 2012-07-19 16:19:08
你在做什麼'importArticles'方法?你能分享一些代碼嗎?當你將可見性設置爲'GONE'後,因爲'ListView'被隱藏,所以不需要調用'articleEntryAdapter.notifyDataSetChanged();'。 – Luksprog 2012-07-19 17:40:33