0

TLDR:

を設定myListView.setVisibility(View.GONE);していますが、後になるまで消えません...可視性を変更したことを何らかの形で知らせる必要がありますか? それとも、内部要素なども非表示にする必要がありますか?

問題の説明:

私は通常のニュースアプリを持っています。「メイン」セクションの記事のリストが表示され、オプションをクリックして新しいセクションを選択できます。

ユーザーがクリックすると、セクションのタイトルが変更されましたが、リスト内の記事は、新しいコンテンツが読み込まれるまで「古い」コンテンツのままで、その後新しいコンテンツが表示されます。

これは明らかに理想的ではありません。リストを非表示にし、読み込みアニメーションを表示してから、新しいデータが取得された後 (DB またはオンライン、次に DB)、新しいコンテンツが表示されるようにします。

私が欲しいと思われるこのSOの質問を見つけましたが、...

メニューを選択するとすぐに GONE を設定し、記事をインポートして新しい記事をロードした後に VISIBLE を設定していますが、その間はまったく消えません。VISIBLE コードを削除すると、記事が再び表示されることはないため、GONE コードが機能することはわかっています。

「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 に答える