2012-07-19 37 views
0

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

+0

'importArticles'中的操作有多快? Android在一次掃描中執行該菜單回調(真正的菜單?),並且'GONE' /'VISIBLE'互相取消,所以你沒有看到任何消失。這與在按鈕的'onClick'回調中嘗試使視圖顯示(它被設置爲不存在)是一樣的,暫停一段時間以模擬一些工作,然後使視圖再次消失。就像你的情況一樣,你不會看到那個視圖(即使是短暫的一段時間)。 – Luksprog 2012-07-19 16:01:02

+0

@Luksprog - 導入文章最多可能需要10秒左右(有時不太確定,但是......一個明顯的時間範圍)。我可以看到我的日誌「現在隱藏」......然後延遲下載/導入文章,然後「顯示現在」。 「菜單」是視圖頂部的微調器。事情是 - 即使我刪除了我的「可見」部分(即它會隱藏,但從不返回),直到導入完成後它纔會消失。 – Dave 2012-07-19 16:19:08

+0

你在做什麼'importArticles'方法?你能分享一些代碼嗎?當你將可見性設置爲'GONE'後,因爲'ListView'被隱藏,所以不需要調用'articleEntryAdapter.notifyDataSetChanged();'。 – Luksprog 2012-07-19 17:40:33

回答

0

你要你做出改變視圖隨時隨地無效到它的外觀,所以在設置可視性後撥打articleEntryListView.invalidate()

+0

這不會改變任何東西,除了現在我的列表數據在新節加載時不會改變。 – Dave 2012-07-19 15:39:09