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