类FirebaseRecyclerAdapter中构造函数FirebaseRecyclerAdapter出错[复制]

问题描述 投票:0回答:1

这个问题在这里已有答案:

如何解决这个错误?

错误:类FirebaseRecyclerAdapter中的构造函数FirebaseRecyclerAdapter无法应用于给定类型; required:找到FirebaseRecyclerOptions:Class,int,Class,DatabaseReference原因:实际和形式参数列表的长度不同,其中T,VH是类型变量:T extends类在FirebaseRecyclerAdapter中声明的对象VH扩展了在类FirebaseRecyclerAdapter中声明的ViewHolder

mFirebaseDatabaseReference = FirebaseDatabase.getInstance().getReference();
    mFirebaseAdapter = new FirebaseRecyclerAdapter<FriendlyMessage,
            MessageViewHolder>(
            FriendlyMessage.class,
            R.layout.activity_my_message,
            MessageViewHolder.class,
            mFirebaseDatabaseReference.child(MESSAGES_CHILD)) {

        @Override
        protected void populateViewHolder(MessageViewHolder viewHolder,
                                          FriendlyMessage friendlyMessage, int position) {
            mProgressBar.setVisibility(ProgressBar.INVISIBLE);
            viewHolder.messageTextView.setText(friendlyMessage.getText());
            viewHolder.messengerTextView.setText(friendlyMessage.getName());
            if (friendlyMessage.getPhotoUrl() == null) {
                viewHolder.messengerImageView
                        .setImageDrawable(ContextCompat
                                .getDrawable(Loand.this,
                                        R.drawable.ic_account_circle_black_36dp));
            } else {
                Glide.with(Loand.this)
                        .load(friendlyMessage.getPhotoUrl())
                        .into(viewHolder.messengerImageView);
            }
        }
    };

    mFirebaseAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
        @Override
        public void onItemRangeInserted(int positionStart, int itemCount) {
            super.onItemRangeInserted(positionStart, itemCount);
            int friendlyMessageCount = mFirebaseAdapter.getItemCount();
            int lastVisiblePosition =
                    mLinearLayoutManager.findLastCompletelyVisibleItemPosition();
            // If the recycler view is initially being loaded or the
            // user is at the bottom of the list, scroll to the bottom
            // of the list to show the newly added message.
            if (lastVisiblePosition == -1 ||
                    (positionStart >= (friendlyMessageCount - 1) &&
                            lastVisiblePosition == (positionStart - 1))) {
                mMessageRecyclerView.scrollToPosition(positionStart);
            }
        }
    });

    mMessageRecyclerView.setLayoutManager(mLinearLayoutManager);
    mMessageRecyclerView.setAdapter(mFirebaseAdapter);
android firebase firebase-realtime-database firebaseui
1个回答
0
投票

您收到以下错误:

错误:类FirebaseRecyclerAdapter中的构造函数FirebaseRecyclerAdapter无法应用于给定类型; required:找到FirebaseRecyclerOptions:Class,int,Class,DatabaseReference原因:实际和形式参数列表的长度不同,其中T,VH是类型变量:T extends类在FirebaseRecyclerAdapter中声明的对象VH扩展了在类FirebaseRecyclerAdapter中声明的ViewHolder

因为您已在build.gradle文件中添加了Firebase-UI库依赖项的最新版本之一。为了能够创建FirebaseRecyclerAdapter类的新对象,需要FirebaseRecyclerOptions对象。你在做什么,是将错误的元素传递给构造函数。旧版本中提供了创建适配器的方法。现在,要创建一个新对象,请传递FirebaseRecyclerOptions对象,如以下帖子中的回答所述:

© www.soinside.com 2019 - 2024. All rights reserved.