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);
- 您必须从 Playstore 控制台更新最新的 SHA1 密钥
Playstore 控制台 --> 发布管理 --> 应用签名 --> 应用签名证书(顶部)--> SHA1 副本
并粘贴到 Your Firebase --> Project Settings--> add fingerprint
现在下载最新的 google-service.json 文件并在您的 android 工作室中替换文件。
如果 minifyEnabled true (build.gradle(app)) 你必须在 proguard-rules.pro
中编写 progurd 规则
确保您的 pojo class 是 public 并添加
@Keep
如果您正在使用
,您可以使用检索和显示 firebase 数据的 pojo classes
minifyEnabled true
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);
- 您必须从 Playstore 控制台更新最新的 SHA1 密钥
Playstore 控制台 --> 发布管理 --> 应用签名 --> 应用签名证书(顶部)--> SHA1 副本 并粘贴到 Your Firebase --> Project Settings--> add fingerprint
现在下载最新的 google-service.json 文件并在您的 android 工作室中替换文件。
如果 minifyEnabled true (build.gradle(app)) 你必须在 proguard-rules.pro
中编写 progurd 规则
确保您的 pojo class 是 public 并添加
@Keep
如果您正在使用
,您可以使用检索和显示 firebase 数据的 pojo classesminifyEnabled true