Firebase RecyclerView 无法正常工作,在已发布的 apk 中获取空值

Firebase RecyclerView not working properly, getting null values in released apk

Firebase recyclerview 在发布模式下未显示预期结果,但在调试模式下可以正常工作。它在发布模式下给出空值,但在调试应用程序模式下显示正确的值。

Firebase 在回收站视图中返回空值。

Firebase Recycler 查看代码:

//For setting time
    /*CarouselModel carouselModel = new CarouselModel("Tomorrow's QuizPoint at 10:00 PM","₹50,000","1562587387000","1562587389000");
    quizTiming.push().setValue(carouselModel);*/

    Query query = FirebaseDatabase.getInstance()
            .getReference()
            .child("quizTimings");

    FirebaseRecyclerOptions<CarouselModel> options =
            new FirebaseRecyclerOptions.Builder<CarouselModel>()
                    .setQuery(query, CarouselModel.class)
                    .build();

    scrollView = (RecyclerView) findViewById(R.id.picker);

    adapter = new FirebaseRecyclerAdapter<CarouselModel, TimeViewHolder>(options) {

        @Override
        public TimeViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
            View view = LayoutInflater.from(viewGroup.getContext())
                    .inflate(R.layout.item_time, viewGroup, false);

            return new TimeViewHolder(view);
        }

        @Override
        protected void onBindViewHolder(TimeViewHolder timeViewHolder, int i, final CarouselModel carouselModel) {

            try {
                if (carouselModel.getTime()!=null && !carouselModel.getTime().isEmpty()){
                    String quizTimings = carouselModel.getTime();
                    timeViewHolder.timeShow.setText(quizTimings);
                }else {
                    timeViewHolder.timeShow.setText("error Time");
                }

                if (carouselModel.getTimeMoney()!=null && !carouselModel.getTimeMoney().isEmpty()){
                    String timeMoney = carouselModel.getTimeMoney();
                    timeViewHolder.timeMoney.setText(timeMoney);
                }else {
                    timeViewHolder.timeMoney.setText("error TimeMoney");
                }
            } catch (Exception ex) {
                String err = (ex.getMessage()==null)?"QuizTiming error":ex.getMessage();
                Log.e("quiztiming logs","error "+err);
            }
        }
    };

    CustomLinearLayout linearLayoutManager = new CustomLinearLayout(this,LinearLayoutManager.HORIZONTAL,false);

    scrollView.addItemDecoration(new LinePagerIndicatorDecoration(MainActivity.this));
    scrollView.setLayoutManager(linearLayoutManager);
    scrollView.setAdapter(adapter);

  1. 您必须从 Playstore 控制台更新最新的 SHA1 密钥

Playstore 控制台 --> 发布管理 --> 应用签名 --> 应用签名证书(顶部)--> SHA1 副本 并粘贴到 Your Firebase --> Project Settings--> add fingerprint

  1. 现在下载最新的 google-service.json 文件并在您的 android 工作室中替换文件。

  2. 如果 minifyEnabled true (build.gradle(app)) 你必须在 proguard-rules.pro

  3. 中编写 progurd 规则

确保您的 pojo class 是 public 并添加

@Keep

如果您正在使用

,您可以使用检索和显示 firebase 数据的 pojo classes
minifyEnabled true