【问题标题】:Adding child data from firebase database to cardview using firebaseui使用firebaseui将子数据从firebase数据库添加到cardview
【发布时间】:2017-08-11 11:49:01
【问题描述】:

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

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

但我不知道如何将它添加到我的代码中(我使用的是 firebaseui)。我的卡片视图现在显示为空白。或者如果我应该使用另一组代码,请告诉我。

这是我的 firebase 数据库当前的样子: here

这是我的代码:

我的片段

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);


        }
    }
}

我的数据

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;
    }
}

【问题讨论】:

    标签: android firebase firebase-realtime-database firebaseui


    【解决方案1】:

    你必须引用孩子

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

    希望这会奏效

    【讨论】:

    • 这不起作用。事实上,它会导致我的整个卡片视图根本不显示
    • 嘿@Nithin Paul,我已经完成了 mDatabase = FirebaseDatabase.getInstance().getReference().child("Business").child(userID);相反,它可以工作。除了现在一个空的卡片视图随之而来,这是我不想要的。任何想法如何摆脱它?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多