使用firebaseui将firebase数据库中的子数据添加到cardview [英] Adding child data from firebase database to cardview using firebaseui

查看:95
本文介绍了使用firebaseui将firebase数据库中的子数据添加到cardview的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望我的卡片视图显示我的firebase数据库中的reviewTitle和reviewDetails。我应该怎么做?我正在考虑添加此代码


$ b

'。child(userID).child(Reviews)。child(reviewTitle)''。child(userID).child(Reviews)。child(reviewDetails)'



但我不知道如何将它添加到我的代码(我正在使用firebaseui)。我的卡片视图目前显示空白。或者,如果还有另外一组代码,请让我知道。



这就是我的firebase数据库目前的样子:
这里



这是我的代码:

My Fragment

  public class MyReviews extends Fragment {

private RecyclerView rv;
私有FirebaseAuth firebaseAuth;
private DatabaseReference mDatabase;

LinearLayoutManager nwlinearLayoutManager;

私有FirebaseRecyclerAdapter< ReviewInformation,ReviewsHolder> mFirebaseAdapter;

public MyReviews(){

}

@Override
public view onCreateView(LayoutInflater inflater,ViewGroup container,
Bundle savedInstanceState){

查看rootView = inflater.inflate(R.layout.fragment_my_reviews,container,false);

rv = rootView.findViewById(R.id.rv_recycler_view);
rv.setHasFixedSize(true);
nwlinearLayoutManager = new LinearLayoutManager(getActivity());
nwlinearLayoutManager.setStackFromEnd(true);


firebaseAuth = FirebaseAuth.getInstance();
FirebaseUser user = firebaseAuth.getCurrentUser();
String userID = user.getUid();
mDatabase = FirebaseDatabase.getInstance()。getReference();
Log.i(value1:,mDatabase.toString());
$ b mFirebaseAdapter = new FirebaseRecyclerAdapter< ReviewInformation,ReviewsHolder>(
ReviewInformation.class,
R.layout.card_item,
ReviewsHolder.class,
mDatabase) {
@Override
public void populateViewHolder(ReviewsHolder holder,ReviewInformation chat,int position){
holder.reviewTitle.setText(chat.getReviewTitle());
holder.reviewDetails.setText(chat.getReviewDetails());
}
};

mFirebaseAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver(){
@Override $ b $ public void onItemRangeInserted(int positionStart,int itemCount){
super.onItemRangeInserted(positionStart, itemCount);
int newsCount = mFirebaseAdapter.getItemCount();
int lastVisiblePosition = nwlinearLayoutManager.findLastVisibleItemPosition();
if(lastVisiblePosition == -1 ||(positionStart> =(newsCount -1 )&& lastVisiblePosition ==(positionStart -1))){
rv.scrollToPosition(positionStart);
}
}
});
rv.setLayoutManager(nwlinearLayoutManager);
rv.setAdapter(mFirebaseAdapter);
mFirebaseAdapter.notifyDataSetChanged();


return rootView;


public static class ReviewsHolder extends RecyclerView.ViewHolder {
$ b $ public TextView reviewTitle;
public TextView reviewDetails;
ImageView img;
public ReviewsHolder(查看itemView){
super(itemView);

this.reviewTitle = itemView.findViewById(R.id.tv_text);
this.reviewDetails = itemView.findViewById(R.id.tv_blah);
// img = itemView.findViewById(R.id.beachImage);




$ b code



My Data

  public class ReviewInformation {

public String reviewTitle;
public String reviewDetails;

public ReviewInformation(){


$ b public ReviewInformation(String reviewTitle,String reviewDetails){
this.reviewTitle = reviewTitle;
this.reviewDetails = reviewDetails;
}

public String getReviewTitle(){
return reviewTitle;
}

public void setReviewTitle(String reviewTitle){
this.reviewTitle = reviewTitle;
}

public String getReviewDetails(){
return reviewDetails;
}

public void setReviewDetails(String reviewDetails){
this.reviewDetails = reviewDetails;


$ / code $


解决方案

必须引用孩子

  mDatabase = FirebaseDatabase.getInstance()。getReference()。child(Reviews); 

希望这能起作用


I would like my card view to display the reviewTitle and reviewDetails from my firebase database. How should I do this? I was thinking of adding this code

'.child(userID).child("Reviews").child("reviewTitle")' and '.child(userID).child("Reviews").child("reviewDetails")'

But I have no idea how to add it to my code (I am using firebaseui). My card view now currently shows a blank. Or if there is another set of code I should use, please do let me know.

This is how my firebase database currently looks like: here

And this is my code:

My Fragment

public class MyReviews extends Fragment {

    private RecyclerView rv;
    private FirebaseAuth firebaseAuth;
    private DatabaseReference mDatabase;

    LinearLayoutManager nwlinearLayoutManager;

    private FirebaseRecyclerAdapter<ReviewInformation, ReviewsHolder> mFirebaseAdapter;

    public MyReviews() {

    }

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

        View rootView = inflater.inflate(R.layout.fragment_my_reviews, container, false);

        rv = rootView.findViewById(R.id.rv_recycler_view);
        rv.setHasFixedSize(true);
        nwlinearLayoutManager = new LinearLayoutManager(getActivity());
        nwlinearLayoutManager.setStackFromEnd(true);


        firebaseAuth = FirebaseAuth.getInstance();
        FirebaseUser user = firebaseAuth.getCurrentUser();
        String userID = user.getUid();
        mDatabase = FirebaseDatabase.getInstance().getReference();
        Log.i("value1: ", mDatabase.toString());

        mFirebaseAdapter = new FirebaseRecyclerAdapter<ReviewInformation, ReviewsHolder>(
                ReviewInformation.class,
                R.layout.card_item,
                ReviewsHolder.class,
                mDatabase) {
            @Override
            public void populateViewHolder(ReviewsHolder holder, ReviewInformation chat, int position) {
                holder.reviewTitle.setText(chat.getReviewTitle());
                holder.reviewDetails.setText(chat.getReviewDetails());
            }
        };

        mFirebaseAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver(){
            @Override
            public void onItemRangeInserted(int positionStart, int itemCount){
                super.onItemRangeInserted(positionStart, itemCount);
                int newsCount = mFirebaseAdapter.getItemCount();
                int lastVisiblePosition = nwlinearLayoutManager.findLastVisibleItemPosition();
                if(lastVisiblePosition == -1 || (positionStart>= (newsCount -1) && lastVisiblePosition == (positionStart -1))){
                    rv.scrollToPosition(positionStart);
                }
            }
        });
        rv.setLayoutManager(nwlinearLayoutManager);
        rv.setAdapter(mFirebaseAdapter);
        mFirebaseAdapter.notifyDataSetChanged();


        return rootView;
    }

    public static class ReviewsHolder extends RecyclerView.ViewHolder {

        public TextView reviewTitle;
        public TextView reviewDetails;
        ImageView img;
        public ReviewsHolder(View itemView) {
            super(itemView);

            this.reviewTitle= itemView.findViewById(R.id.tv_text);
            this.reviewDetails= itemView.findViewById(R.id.tv_blah);
            //img= itemView.findViewById(R.id.beachImage);


        }
    }
}

My Data

public class ReviewInformation {

    public String reviewTitle;
    public String reviewDetails;

    public ReviewInformation() {

    }

    public ReviewInformation(String reviewTitle, String reviewDetails) {
        this.reviewTitle = reviewTitle;
        this.reviewDetails = reviewDetails;
    }

    public String getReviewTitle() {
        return reviewTitle;
    }

    public void setReviewTitle(String reviewTitle) {
        this.reviewTitle = reviewTitle;
    }

    public String getReviewDetails() {
        return reviewDetails;
    }

    public void setReviewDetails(String reviewDetails) {
        this.reviewDetails = reviewDetails;
    }
}

解决方案

you have to reference the child

mDatabase = FirebaseDatabase.getInstance().getReference().child("Reviews");

Hope this will work

这篇关于使用firebaseui将firebase数据库中的子数据添加到cardview的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆