2016-12-23 4 views
1

Hiyみんな、Recyclerviewは、新しいデータ

私はそれでRecyclerViewとのフラグメントを持って更新されません。そのRecyclerViewはFirebase「DatabaseReference」オブジェクトによって取り込まれ、次のようにその基準にIはValueListenerを追加しました:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle 
     savedInstanceState) { 
    Log.d(TAG, "onCreateView"); 
    View view = inflater.inflate(R.layout.fragment_home, container, false); 


    databaseReference.addValueEventListener(new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        //Do something 
       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 
        // Getting Post failed, log a message 
        Log.w(TAG, "onCancelled", databaseError.toException()); 
       } 
      }); 

     ItemRecyclerViewAdapter adapter = new ItemRecyclerViewAdapter(activity, itemsDatabaseReference); 
      adapter.setHasStableIds(true); 
      // use a linear layout manager 
      RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recyclerview); 
      recyclerView.setHasFixedSize(true); 
      RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity()); 
      recyclerView.setLayoutManager(layoutManager); 
      DividerItemDecoration itemDecoration = new DividerItemDecoration(getContext(), 
        DividerItemDecoration.VERTICAL_LIST); 
      recyclerView.addItemDecoration(itemDecoration); 
      recyclerView.setAdapter(adapter); 

    return view; 
} 

ItemRecyclerViewAdapterFirebaseRecyclerAdapterを拡張します。問題は、onResumeの後にonDataChangeが発生し、時にはリサイクル業者が空になることです。私が理解できないことは、リサイクル業者のビューが常に空ではないという事実です。場合によってはデータが表示されることもあります。

ありがとうございました

+0

リサイクラービューにデータを追加すると、コードにadapter.notifyDatasetChaged()が呼び出されました –

+0

こんにちは@ujjwalmainali、 'adapter.notifyDataSetChanged()'の呼び出しの有無は関係ありません。要点は、リサイクラビューが常に空ではないということです。だから、私自身は本当に問題を理解していない。 – DeKekem

答えて

0

RecyclerViewアダプターとしてFirebaseRecyclerAdapter(またはそれから拡張されたクラス)を使用している場合は、recyclerView.setHasFixedSize(false)と設定する必要があります。したがって、recyclerViewは、データが絶えず更新されていることを知っていました。

0

実際にはonResume(); onResume()アクティビティに厳密にバインドされています。もしviewpagerを使用している場合

あなたが)(onViewCreatedに更新することができ、次いで

でframeLayoutにinfaltingある場合、断片

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 
    //do your logic . updating recycler view 
} 

方法があります。

+0

こんにちは@Godwin。私はviewpager – DeKekem

+0

を使用していないので、Framelayoutを使ってフラグメントを膨らませています – Godwin

+0

こんにちは@Godwinです。 – DeKekem

関連する問題