标签:firebaseui firebase firebase-realtime-database android
我正在通过Firebase制作聊天Messenger,但我的Android Studio 2.3.2无法解析FirebaseRecyclerOptions<甚至我的应用程序都已成功连接到Firebase,并且已正确配置到Firebase Realtime数据库,并且FirebaseRecyclerAdaper也已很好地导入. 似乎build.gradle依赖项已同步且正常.我需要别人的帮助. 以下是我在MainActivities中的依赖和代码. 在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);
}
}
}
>下面是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'
解决方法:
您需要更新FirebaseUI依赖性,在build.gradle中使用以下内容:
implementation 'com.firebaseui:firebase-ui-database:4.3.2'
Firebaseui 3.0中添加了FirebaseRecyclerOptions,而您使用的是Firebaseui 2.0,这就是您收到该错误的原因.
更多信息在这里:
https://github.com/firebase/FirebaseUI-Android/blob/master/database/README.md
检查以下内容:
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 likeFirebaseRecyclerOptions
. These options objects can be constructed via their respective builders. For more information, seedatabase/README.md
.
https://github.com/firebase/FirebaseUI-Android/blob/master/docs/upgrade-to-3.0.md#realtime-database
标签:firebaseui,firebase,firebase-realtime-database,android 来源: https://codeday.me/bug/20191211/2105421.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。