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方法,然后在运行应用程序后搜索并编写列表视图未显示plz帮助我.
When i upgrade my firebase-ui version to 3.2.2 the firebaserecycleradapter doesn't show any output the code of mine. at first when i got multidex error then i upgrade all library version to lastest version on dependency of app lvl gradle and after upgrade the problem is found the Firebaserecycleradapter method then i search it and write after run the app the list view are not displaying plz help me.
onStart():
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);
}
}
推荐答案
为了使您的代码正常工作,请考虑使用以下步骤.
In order to make your code work, please consider using the following steps.
-
从您的
UsersViewHolder
类的声明中删除static
.只能是:
Remove the
static
from the declaration of yourUsersViewHolder
class. Should be only:
public class UsersViewHolder extends RecyclerView.ViewHolder {/* ... */}
还要从mView
字段和所有方法中删除static
关键字.您的Holder类应如下所示:
Remove the static
keyword also from the mView
field and all your methods. Your holder class should look like this:
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);
}
}
从onCreate()方法内的onStart()
方法中移出所有代码,除了以下代码行:
Move all the code from the onStart()
method inside onCreate() method except this line of code:
super.onStart();
将您的firebaseRecyclerAdapter
变量设为全局变量:
Make your firebaseRecyclerAdapter
varaible global:
private FirebaseRecyclerAdapter<Users, UsersViewHolder> firebaseRecyclerAdapter;
从onCreate()方法中删除FirebaseRecyclerAdapter<Blog, BlogViewHolder>
.
在onStart()
和onStop()
方法中添加以下代码行.
Add the following lines of code in the onStart()
and onStop()
methods.
@Override
protected void onStart() {
super.onStart();
firebaseRecyclerAdapter.startListening();
}
@Override
protected void onStop() {
super.onStop();
if(firebaseRecyclerAdapter != null) {
firebaseRecyclerAdapter.stopListening();
}
}
如果您使用的是身份验证,也请不要忘记在onStart()
方法中添加以下代码行:
If you are using authentication, please also don't forget to add this line of code inside onStart()
method:
firebaseAuth.addAuthStateListener(authStateListener);
这篇关于firebase ui升级到3.2.2时未显示输出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!