firebase ui升级到3.2.2时未显示输出 [英] Output not showing when the firebase ui upgrade to 3.2.2

查看:46
本文介绍了firebase ui升级到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.

  1. 从您的UsersViewHolder类的声明中删除static.只能是:

  1. Remove the static from the declaration of your UsersViewHolder 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屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆