2016-09-05 11 views
0

私はこの小さな問題があります。私のカスタムViewは、電話の速さによって100ミリ秒から1秒の時間がかかります。ビューはFragmentにありますが、データはMainActivityにロードされています。場合によっては、FragmentViewよりも速くデータがロードされることがあります。このデータは、ビューにデータが存在しないため空白になることがあります。ビューがロードされてからロードされたデータを入れるまで待つ

Viewへのデータ入力をどのように遅らせることができますか?

+0

ビューの読み込みが完了すると呼び出されるコールバックを追加します。 –

+0

fargmentのライフサイクルを参照してください:https://developer.android.com/guide/components/fragments.html –

+0

Fragmentの 'onViewCreated()'でカスタムビューにデータを割り当てることができます –

答えて

0

これを行うにはいくつかの方法があります。個人的には、これらの目的でProgressFragmentを使用することをお勧めします。 Here's a nice libraryは、データがまだ読み込まれているときにデフォルトの進捗アニメーションを表示します。

ライブラリの実装は非常に簡単です。

これをあなたのgradleに追加します。

dependencies { 
    compile 'com.github.johnkil.android-progressfragment:progressfragment:1.4.+' 
} 

今、あなたのFragmentonActivityCreate()方法でProgressFragment

public class MyProgressFragment extends ProgressFragment { 
    // your code of fragment 
} 

セットアップコンテンツビューを拡張する必要があります。データが利用可能である場合には、onActivityCreated

setContentShown(false); 

に呼び出すことにより、不確定進捗インジケータの

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    // Setup content view 
    setContentView(R.layout.content); 
} 

表示は正しい場所に関連したViewを表示するようにしてください張り出します。

if (this.isAdded()) setContentShown(true); 

一つのこと、あなたが、あなたは私が先に言ったようにレイアウトIDがandroid:id="@+id/content_container"

になります/非表示を表示したいViewの親のレイアウトを持っている必要があり、このライブラリを実装しながら、覚えておく必要があります他の方法もあります。 Fragmentlifecycleをお持ちの場合は、Viewが利用可能になった時点でデータを入力する方法があります。 onActivityCreatedの中にあなたのデータを入力するだけで、この場合にも役立ちます。

+0

これは実際に私が探していたものではありません... – Bartando