当 firebase ui 升级到 3.2.2 时输出不显示
Output not showing when the firebase ui upgrade to 3.2.2
当我将我的 firebase-ui 版本升级到 3.2.2 时,firebaserecycleradapter 没有显示我的代码的任何输出。起初,当我遇到 multidex 错误时,我将所有库版本升级到依赖于应用程序 lvl gradle 的最新版本,升级后发现问题是 Firebaserecycleradapter 方法,然后我搜索它并在 运行 应用程序之后写入列表视图不显示请帮助我。
onStart():
@Override
protected void onStart() {
super.onStart();
FirebaseRecyclerOptions <Users> options = new FirebaseRecyclerOptions.Builder<Users>()
.setQuery(mUserDatabase,Users.class)
.build();
FirebaseRecyclerAdapter<Users, UsersViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Users, UsersViewHolder>(options) {
@NonNull
@Override
public UsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.user_list_layout, parent, false);
return new UsersViewHolder(view);
}
@Override
protected void onBindViewHolder(@NonNull UsersViewHolder holder, int position, @NonNull Users model) {
holder.setName(model.getName());
holder.setStatus(model.getStatus());
holder.setRIDNo(model.getRidno());
holder.setUserImage(model.getThumb_image(), getApplicationContext());
//to get key
final String user_id = getRef(position).getKey();
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent profileIntent = new Intent(UsersActivity.this, ProfileActivity.class);
profileIntent.putExtra("user_id", user_id);
startActivity(profileIntent);
}
});
}
};
mUsersList.setAdapter(firebaseRecyclerAdapter);
}
并且取景器是:
//User list viewholder
public static class UsersViewHolder extends RecyclerView.ViewHolder {
static View mView;
private CircleImageView mUserView;
public UsersViewHolder(View itemView) {
super(itemView);
mView = itemView;
}
public static void setName(String name){
TextView userNameView = (TextView) mView.findViewById(R.id.user_single_name);
userNameView.setText(name);
}
public static void setStatus(String status){
TextView userStatusView = (TextView) mView.findViewById(R.id.user_single_status);
userStatusView.setText(status);
}
public static void setRIDNo(String ridno){
TextView userRIDNoView = (TextView) mView.findViewById(R.id.user_single_ridno);
userRIDNoView.setText(ridno);
}
public static void setUserImage(String thumb_image, Context ctx){
CircleImageView userImageView = (CircleImageView) mView.findViewById(R.id.user_single_image);
Picasso.with(ctx).load(thumb_image).placeholder(R.drawable.default_avatar).into(userImageView);
}
}
为了使您的代码正常工作,请考虑使用以下步骤。
从 UsersViewHolder
class 的声明中删除 static
。应该只有:
public class UsersViewHolder extends RecyclerView.ViewHolder {/* ... */}
也从 mView
字段和所有方法中删除 static
关键字。你的支架 class 应该是这样的:
public class UsersViewHolder extends RecyclerView.ViewHolder {
private View mView;
private CircleImageView mUserView;
public UsersViewHolder(View itemView) {
super(itemView);
mView = itemView;
}
public void setName(String name){
TextView userNameView = (TextView) mView.findViewById(R.id.user_single_name);
userNameView.setText(name);
}
public void setStatus(String status){
TextView userStatusView = (TextView) mView.findViewById(R.id.user_single_status);
userStatusView.setText(status);
}
public void setRIDNo(String ridno){
TextView userRIDNoView = (TextView) mView.findViewById(R.id.user_single_ridno);
userRIDNoView.setText(ridno);
}
public void setUserImage(String thumb_image, Context ctx){
CircleImageView userImageView = (CircleImageView) mView.findViewById(R.id.user_single_image);
Picasso.with(ctx).load(thumb_image).placeholder(R.drawable.default_avatar).into(userImageView);
}
}
将 onStart()
方法中的所有代码移到 onCreate() 方法中,除了这行代码:
super.onStart();
使您的 firebaseRecyclerAdapter
变量成为全局变量:
private FirebaseRecyclerAdapter<Users, UsersViewHolder> firebaseRecyclerAdapter;
从 onCreate() 方法中删除 FirebaseRecyclerAdapter<Blog, BlogViewHolder>
。
在 onStart()
和 onStop()
方法中添加以下代码行。
@Override
protected void onStart() {
super.onStart();
firebaseRecyclerAdapter.startListening();
}
@Override
protected void onStop() {
super.onStop();
if(firebaseRecyclerAdapter != null) {
firebaseRecyclerAdapter.stopListening();
}
}
如果您使用身份验证,也请不要忘记在 onStart()
方法中添加这行代码:
firebaseAuth.addAuthStateListener(authStateListener);
当我将我的 firebase-ui 版本升级到 3.2.2 时,firebaserecycleradapter 没有显示我的代码的任何输出。起初,当我遇到 multidex 错误时,我将所有库版本升级到依赖于应用程序 lvl gradle 的最新版本,升级后发现问题是 Firebaserecycleradapter 方法,然后我搜索它并在 运行 应用程序之后写入列表视图不显示请帮助我。
onStart():
@Override
protected void onStart() {
super.onStart();
FirebaseRecyclerOptions <Users> options = new FirebaseRecyclerOptions.Builder<Users>()
.setQuery(mUserDatabase,Users.class)
.build();
FirebaseRecyclerAdapter<Users, UsersViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Users, UsersViewHolder>(options) {
@NonNull
@Override
public UsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.user_list_layout, parent, false);
return new UsersViewHolder(view);
}
@Override
protected void onBindViewHolder(@NonNull UsersViewHolder holder, int position, @NonNull Users model) {
holder.setName(model.getName());
holder.setStatus(model.getStatus());
holder.setRIDNo(model.getRidno());
holder.setUserImage(model.getThumb_image(), getApplicationContext());
//to get key
final String user_id = getRef(position).getKey();
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent profileIntent = new Intent(UsersActivity.this, ProfileActivity.class);
profileIntent.putExtra("user_id", user_id);
startActivity(profileIntent);
}
});
}
};
mUsersList.setAdapter(firebaseRecyclerAdapter);
}
并且取景器是:
//User list viewholder
public static class UsersViewHolder extends RecyclerView.ViewHolder {
static View mView;
private CircleImageView mUserView;
public UsersViewHolder(View itemView) {
super(itemView);
mView = itemView;
}
public static void setName(String name){
TextView userNameView = (TextView) mView.findViewById(R.id.user_single_name);
userNameView.setText(name);
}
public static void setStatus(String status){
TextView userStatusView = (TextView) mView.findViewById(R.id.user_single_status);
userStatusView.setText(status);
}
public static void setRIDNo(String ridno){
TextView userRIDNoView = (TextView) mView.findViewById(R.id.user_single_ridno);
userRIDNoView.setText(ridno);
}
public static void setUserImage(String thumb_image, Context ctx){
CircleImageView userImageView = (CircleImageView) mView.findViewById(R.id.user_single_image);
Picasso.with(ctx).load(thumb_image).placeholder(R.drawable.default_avatar).into(userImageView);
}
}
为了使您的代码正常工作,请考虑使用以下步骤。
从
UsersViewHolder
class 的声明中删除static
。应该只有:public class UsersViewHolder extends RecyclerView.ViewHolder {/* ... */}
也从
mView
字段和所有方法中删除static
关键字。你的支架 class 应该是这样的:public class UsersViewHolder extends RecyclerView.ViewHolder { private View mView; private CircleImageView mUserView; public UsersViewHolder(View itemView) { super(itemView); mView = itemView; } public void setName(String name){ TextView userNameView = (TextView) mView.findViewById(R.id.user_single_name); userNameView.setText(name); } public void setStatus(String status){ TextView userStatusView = (TextView) mView.findViewById(R.id.user_single_status); userStatusView.setText(status); } public void setRIDNo(String ridno){ TextView userRIDNoView = (TextView) mView.findViewById(R.id.user_single_ridno); userRIDNoView.setText(ridno); } public void setUserImage(String thumb_image, Context ctx){ CircleImageView userImageView = (CircleImageView) mView.findViewById(R.id.user_single_image); Picasso.with(ctx).load(thumb_image).placeholder(R.drawable.default_avatar).into(userImageView); } }
将
onStart()
方法中的所有代码移到 onCreate() 方法中,除了这行代码:super.onStart();
使您的
firebaseRecyclerAdapter
变量成为全局变量:private FirebaseRecyclerAdapter<Users, UsersViewHolder> firebaseRecyclerAdapter;
从 onCreate() 方法中删除
FirebaseRecyclerAdapter<Blog, BlogViewHolder>
。在
onStart()
和onStop()
方法中添加以下代码行。@Override protected void onStart() { super.onStart(); firebaseRecyclerAdapter.startListening(); } @Override protected void onStop() { super.onStop(); if(firebaseRecyclerAdapter != null) { firebaseRecyclerAdapter.stopListening(); } }
如果您使用身份验证,也请不要忘记在
onStart()
方法中添加这行代码:firebaseAuth.addAuthStateListener(authStateListener);