2017-02-21 17 views
0

私は単純なプロジェクトを開発しています。 CategoryFragmentは、MainActivityで最初に追加されたフラグメントです。私はFireBaseからデータを受信し、RecyclerViewでそれを表示することを期待しています。FirebaseDabaseからデータをフラグメント化する必要があります

以下、私のコードです。アプリの起動中に落ちることはありません。エラーはありません。 私は自分の目的のためにいくつかの方法を使うべきだと思いますが、私はFirebaseで初めてです。

public class CategoryFragment extends Fragment { 

    public DatabaseReference mRootDB; 
    private RecyclerView mRecyclerView; 
    public FirebaseRecyclerAdapter<Category, CategoryViewHolder> adapter; 


    @Override 
    public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     mRootDB = FirebaseDatabase.getInstance().getReference().child("categories"); 
     adapter = new FirebaseRecyclerAdapter <Category, CategoryViewHolder>(
       Category.class, 
       R.layout.model_category, 
       CategoryViewHolder.class, 
       mRootDB) 
     { 
      @Override 
      protected void populateViewHolder(CategoryViewHolder viewHolder, Category model, int position) { 
       viewHolder.setCategory(model.getName()); 
      } 
     }; 
     mRecyclerView.setAdapter(adapter); 
    } 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.frag_category, container, false); 

     mRecyclerView = (RecyclerView) rootView.findViewById(R.id.category_RV); 

     return rootView; 
    } 


    public static class CategoryViewHolder extends RecyclerView.ViewHolder { 

     View mView; 
     TextView category_CV; 

     public CategoryViewHolder(View itemView) { 
      super(itemView); 
      mView = itemView; 
      category_CV = (TextView) mView.findViewById(R.id.category_CV); 
     } 

     public void setCategory(String data){ 
      category_CV.setText(data); 
     } 

    } 
} 

答えて

1

私はonActivityCreatedを(上書きしないでしょう)私があなただったら、あなたは)(onCreateViewでRecyclerViewを作成して返すことができます。 Firebaseにデータがありますか? parseSnapshot()をこのようにオーバーライドして、何かが戻ってきていることを確認するためにブレークポイントを設定し、そうであれば、RecyclerViewカスタムレイアウトをチェックすることができます。

public class CategoryFragment extends Fragment { 

    public DatabaseReference mRootDB; 
    private RecyclerView mRecyclerView; 
    public FirebaseRecyclerAdapter<Category, CategoryViewHolder> adapter; 



    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.frag_category, container, false);  

     mRecyclerView = (RecyclerView) rootView.findViewById(R.id.category_RV); 
     mRootDB = FirebaseDatabase.getInstance().getReference().child("categories"); 
     adapter = new FirebaseRecyclerAdapter <Category, CategoryViewHolder>(
       Category.class, 
       R.layout.model_category, 
       CategoryViewHolder.class, 
       mRootDB) 
     { 
      @Override 
      protected Category parseSnapshot(DataSnapshot snapshot) { 
       Category category = super.parseSnapshot(snapshot); 
       if (category != null){ 
        category.setId(snapshot.getKey()); 
       } 
       return category; 
      } 

      @Override 
      protected void populateViewHolder(CategoryViewHolder viewHolder, Category model, int position) { 
       viewHolder.setCategory(model.getName()); 
      } 
     }; 

     mRecyclerView.setAdapter(adapter); 

     return rootView; 
    } 


    public static class CategoryViewHolder extends RecyclerView.ViewHolder { 

     View mView; 
     TextView category_CV; 

     public CategoryViewHolder(View itemView) { 
      super(itemView); 
      mView = itemView; 
      category_CV = (TextView) mView.findViewById(R.id.category_CV); 
     } 

     public void setCategory(String data){ 
      category_CV.setText(data); 
     } 

    } 
} 
関連する問題