Cannot resolve symbol "FirebaseRecyclerOptions"

10,641

You need to update your FirebaseUI dependency, use the following in your build.gradle:

implementation 'com.firebaseui:firebase-ui-database:4.3.2' 

FirebaseRecyclerOptions was added in Firebaseui 3.0 and you are using Firebaseui 2.0 that's why you got that error.

More info here :

https://github.com/firebase/FirebaseUI-Android/blob/master/database/README.md


Check the following:

Adapter initialization - in previous versions the adapter classes (FirebaseRecyclerAdapter, FirebaseListAdapter, etc) had multiple constructor overloads. In 3.x, each adapter has a single constructor that takes an Options object like FirebaseRecyclerOptions. These options objects can be constructed via their respective builders. For more information, see database/README.md.

https://github.com/firebase/FirebaseUI-Android/blob/master/docs/upgrade-to-3.0.md#realtime-database

Note:

The current latest version of FirebaseUI is 6.4.0:

implementation 'com.firebaseui:firebase-ui-database:6.4.0'

https://github.com/firebase/FirebaseUI-Android

Share:
10,641
Admin
Author by

Admin

Updated on June 15, 2022

Comments

  • Admin
    Admin almost 2 years

    I am making a chat messenger via Firebase but my Android Studio 2.3.2 cannot resolve the symbol of FirebaseRecyclerOptions<> even my app is successfully connected with Firebase and configured correctly to Firebase Realtime Database and FirebaseRecyclerAdaper also was well imported.

    Seems build.gradle dependencies are synchronized and OK. I need someone's help.

    The Below is my dependencies in and codes in MainActivities.

    Added and tried with several other dependencies in build.gradle

    private FirebaseRecyclerAdapter<ChatMessage, MessageViewHolder> mFirebaseAdapter; // Ph4 Reading chat
    
    private static final String MESSAGES_CHILD = "messages"; // Ph3 Chat DB
    
    private DatabaseReference mFirebaseDatabaseReference; // Ph3 Chat DB
    private EditText mMessageEditText; // Ph3 DB
    
    private FirebaseAuth mFirebaseAuth;
    private FirebaseUser mFirebaseUser;
    
    private String mUsername; // Ph3 Chat DB
    private String mPhotoUrl; // Ph3 DB
    
    private GoogleApiClient mGoogleApiClient; // Ph2 Log-out
    
    @Override // Ph2 Log-out
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
    
    }
    
    public static class MessageViewHolder extends RecyclerView.ViewHolder { // 내부클래스
        TextView nameTextView;
        ImageView messageImageView;
        TextView messageTextView;
        CircleImageView photoImageView;
    
        public MessageViewHolder(View itemView) {
            super(itemView);
    
            nameTextView = (TextView) itemView.findViewById(R.id.nameTextView);
            messageImageView = (ImageView) itemView.findViewById(R.id.messageImageView);
            messageTextView = (TextView) itemView.findViewById(R.id.messageTextView);
            photoImageView = (CircleImageView) itemView.findViewById(R.id.photoImageView);
        }
    }
    
    private RecyclerView mMessageRecyclerView;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        mFirebaseDatabaseReference = FirebaseDatabase.getInstance().getReference(); // Ph3 Chat DB
        mMessageEditText = (EditText) findViewById(R.id.message_edit); // Ph3 DB
    
        mMessageRecyclerView = (RecyclerView) findViewById(R.id.message_recycler_view);
    
        findViewById(R.id.send_button).setOnClickListener(new View.OnClickListener() { // Ph3 Chat DB
            @Override
            public void onClick(View v) {
                ChatMessage chatMessage = new ChatMessage(mMessageEditText.getText().toString(),
                        mUsername, mPhotoUrl, null);
                mFirebaseDatabaseReference.child(MESSAGES_CHILD)
                        .push()
                        .setValue(chatMessage);
                mMessageEditText.setText("");
            }
        });
    
        mGoogleApiClient = new GoogleApiClient.Builder(this) // Ph2 Log-out
                .enableAutoManage(this, this)
                .addApi(Auth.GOOGLE_SIGN_IN_API)
                .build();
    
        mFirebaseAuth = FirebaseAuth.getInstance();
        mFirebaseUser = mFirebaseAuth.getCurrentUser();
        if (mFirebaseUser == null) {
            startActivity(new Intent(this, SignInActivity.class));
            finish();
            return;
        } else {
            mUsername = mFirebaseUser.getDisplayName();
            if (mFirebaseUser.getPhotoUrl() != null ) {
                mPhotoUrl = mFirebaseUser.getPhotoUrl().toString();
            }
        }
    
        Query query = mFirebaseDatabaseReference.child(MESSAGES_CHILD); // Ph4 Reading chat
        FirebaseRecyclerOptions<ChatMessage> options = new FirebaseRecyclerOptions.Builder<ChatMessage>() //ph4
                .setQuery(query, ChatMessage.class)
                .build();
    
        mFirebaseAdapter = new FirebaseRecyclerAdapter<ChatMessage, MessageViewHolder>(options) { // Ph4 Reading chat
    
            @Override
            protected void onBindViewHolder(MessageViewHolder holder, int position, ChatMessage model) {
                holder.messageTextView.setText(model.getText());
                holder.nameTextView.setText(model.getName());
                if (model.getPhotoUrl() == null) {
                    holder.photoImageView.setImageDrawable(ContextCompat.getDrawable(MainActivity.this,
                            R.drawable.ic_account_circle_black_24dp));
                } else {
                    Glide.with(MainActivity.this)
                            .load(model.getPhotoUrl())
                            .into(holder.photoImageView);
                }
            }
    
            @Override
            public MessageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                View view = LayoutInflater.from(parent.getContext())
                        .inflate(R.layout.item_message, parent, false);
                return new MessageViewHolder(view);
            }
    
            @Override
            protected void populateViewHolder(MessageViewHolder viewHolder, ChatMessage model, int position) {
    
            }
        };
    
        mMessageRecyclerView.setLayoutManager(new LinearLayoutManager(this)); // Ph4
        mMessageRecyclerView.setAdapter(mFirebaseAdapter); // Ph4
    }
    
    @Override
    protected void onStart() { // Ph4 Reading chat
        super.onStart();
        mFirebaseAdapter.startListening();
    }
    
    @Override
    protected void onStop() { // Ph4 Reading chat
        super.onStop();
        mFirebaseAdapter.stopListening();
    }
    
    @Override // Ph2 Log-out
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
    @Override // Ph2 Log-out
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.sign_out_menu:
                mFirebaseAuth.signOut();
                Auth.GoogleSignInApi.signOut(mGoogleApiClient);
                mUsername = "";
                startActivity(new Intent(this, SignInActivity.class));
                finish();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
     }
    }
    
    1. Below is build.gradle
        compile 'com.android.support:appcompat-v7:25.3.1'
        compile 'com.android.support.constraint:constraint-layout:1.0.2'
        compile 'com.android.support:recyclerview-v7:25.3.1'
        compile 'com.android.support.test:runner:0.5'
        compile 'de.hdodenhof:circleimageview:3.0.0'
        compile 'com.google.firebase:firebase-database:11.0.0'
        compile 'com.google.firebase:firebase-auth:11.0.0'
        testCompile 'junit:junit:4.12'
        compile 'com.google.android.gms:play-services-auth:11.0.0'
    
        compile 'com.firebaseui:firebase-ui-database:2.0.0'
    
        compile 'com.github.bumptech.glide:glide:4.6.0'
        annotationProcessor 'com.github.bumptech.glide:compiler:4.6.0'
    
    }
    apply plugin: 'com.google.gms.google-services'