0

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

4

1 回答 1

0

每当您更改视图的外观时,您都必须使视图无效,因此请articleEntryListView.invalidate()在设置可见性后调用 。

于 2012-07-19T15:30:49.470 回答