2017-01-01 8 views
0

Ionic2 AppでFirebase3を使用しています。要件は約2000個のオブジェクトのデータをロードすることであり、ページを切り替える(ナビゲーションを使用する)たびにデータをロードする必要があります。しかし、毎回のデータの読み込みはうまくいかない。ローカルからロードするたびにデータを取得する方法

したがって、連絡先リストのような一度だけデータを取得する方法はありますか。

ロードされたデータはローカルから表示されます。

ありがとうございます!

答えて

1

このコードを試してください: -

private List<Contact> contactList; 
private SharedPreferences shared ; 


public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 

    View view = inflater.inflate(R.layout.fragment_contacts, container, false); 

    shared = getSharedPreferences("AppPref", MODE_PRIVATE); 
    //**Get the data from local storage** 
    List<Contacts> contactList = new Gson().fromJson((shared.getString("contacts", "")),new TypeToke<List<Contact>>(){}.getType()); 

    if(contactList ==null) { // if no data found then call firebase service 

     contactList=new ArrayList(); 

    //Use addListenerForSingleValueEvent instead of ValueEventListener.So this will listen only once. 
     mDataBaseRef.child("Your_Node").addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      for(DataSnapshot postSnapshot : dataSnapshot.getChildren()){ 
       contactList.add(postSnapshot.getValue(Contact.class); 
      } 

       //Save the data in Shared Preferences 
       SharedPreferences.Editor editor = shared.edit(); 
       editor.putString("contacts", new Gson().toJson(contactList)); 
       editor.commit(); 
     } 

     @Override 
     public void onCancelled(FirebaseError firebaseError) { 
      contactList = null ; 
     } 
    }); 
    } 

return view ;  
} 
関連する問題