I need to add a header view in RecyclerView and the adapter I am using is from Firebase ui. 
For a normal RecyclerView adapter I would simply handle different view types and deal with some count/position offsets.
But following the same approach in FirebaseAdapter seems like a bad practice, what would be the best approach in this case.
This is the closest I could get.
       mAdapter = new FirebaseRecyclerAdapter<Comment, RecyclerView.ViewHolder>(Comment.class,
            R.layout.item_comment, CommentHolder.class, ref) {
        final static int TYPE_HEADER = 0;
        final static int TYPE_ITEM = 1;
        @Override
        protected void populateViewHolder(RecyclerView.ViewHolder viewHolder, Comment comment, int position) {
            //cast to comment holder
            final CommentHolder commentViewHolder = (CommentHolder) viewHolder;
            //initialize view
            commentViewHolder.setComment(comment.getComment());
            commentViewHolder.setTime(comment.getTimestamp());
            //get user details and set view
            DatabaseReference ref = FirebaseDatabase.getInstance().getReference(FireContract.PATH_USER_PROFILE)
                    .child(comment.getUserKey());
            ref.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    User user = dataSnapshot.getValue(User.class);
                    if(user != null) {
                        commentViewHolder.setName(user.getName());
                        commentViewHolder.setUsername("@" + user.getUsername());
                    }
                }
                @Override
                public void onCancelled(DatabaseError databaseError) {
                }
            });
        }
        //return header view holder is type is header else return super from firebase ui
        @Override
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            if(viewType == TYPE_HEADER){
                View view = LayoutInflater.from(getActivity()).inflate(R.layout.post_details,
                        parent, false);
                return new PostViewHolder(view);
            }
            else
                return super.onCreateViewHolder(parent, viewType);
        }
        //initialize post details as header if position is 0 else call super with position less
        //by one to cater for the header offset
        @Override
        public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
            if(position == 0)
                initializePostDetails((PostViewHolder) viewHolder);
            else
                super.onBindViewHolder(viewHolder, position - 1);
        }
        //return view type header if position is 0 else call super from firebase ui
        @Override
        public int getItemViewType(int position) {
            if(position == 0)
                return TYPE_HEADER;
            return super.getItemViewType(position - 1);
        }
        //set count equal to 1 plus actual list items, 1 is added for header view
        @Override
        public int getItemCount() {
            return super.getItemCount() + 1;
        }
    };
but this is giving a cannot resolve constructor issue but it may not work even after resolving this.