Java 来自Firebase的数据未显示在RecyclerView中
MyJava 来自Firebase的数据未显示在RecyclerView中,java,android,firebase,firebase-realtime-database,android-recyclerview,Java,Android,Firebase,Firebase Realtime Database,Android Recyclerview,MyRecyclerView不显示来自Firebase的任何数据。我在logcat没有看到任何错误,所以我不知道为什么。我跟着录像带上的指南走。但还是什么都没有。我使用的是安卓8.0和API 27。希望有人能帮忙 我的主要活动代码: public class ViewProduct extends AppCompatActivity { DatabaseReference ref; ArrayList<Model> list; private RecyclerView
RecyclerView
不显示来自Firebase的任何数据。我在logcat没有看到任何错误,所以我不知道为什么。我跟着录像带上的指南走。但还是什么都没有。我使用的是安卓8.0和API 27。希望有人能帮忙
我的主要活动代码:
public class ViewProduct extends AppCompatActivity {
DatabaseReference ref;
ArrayList<Model> list;
private RecyclerView recyclerView;
private RecyclerView.Adapter viewHolder;
private RecyclerView.LayoutManager layoutManager;
SearchView searchView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_product) ;
ref = FirebaseDatabase.getInstance().getReference().child("buddymealplanneruser").
child("Products");
recyclerView = findViewById(R.id.stallproductRecyclerView);
//recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
//SEARCH VIEW
searchView = findViewById(R.id.searchProductStall);
//ADAPTER
list = new ArrayList<>();
viewHolder = new ViewHolder(list);
recyclerView.setAdapter(viewHolder);
}
@Override
protected void onRestart() {
super.onRestart();
if (ref!=null)
{
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists())
{
//list = new ArrayList<>();
list.clear();
for(DataSnapshot ds : dataSnapshot.getChildren())
{
list.add(ds.getValue(Model.class));
}
//ViewHolder viewHolder = new ViewHolder(list);
//recyclerView.setAdapter(viewHolder);
viewHolder.notifyDataSetChanged();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(ViewProduct.this, databaseError.getMessage(),
Toast.LENGTH_SHORT).show();
}
});
}
if (searchView !=null)
{
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s)
{
return false;
}
@Override
public boolean onQueryTextChange(String s) {
search(s);
return true;
}
});
}
}
private void search(String str) {
ArrayList<Model> myList = new ArrayList<>();
for(Model object : list)
{
if(object.getProductName().toLowerCase().contains(str.toLowerCase()))
{
myList.add(object);
}
}
ViewHolder viewHolder = new ViewHolder(myList);
recyclerView.setAdapter(viewHolder);
}
}
我的firebase和我的应用程序的屏幕截图
我不认为您正在填充列表,您发送的是空的。从我看到的情况来看,只有在重新启动活动时才能将项目添加到列表中。在发送列表之前,请尝试填充列表,或者将onRestart()更改为onStart()或onResume(),我认为您没有填充列表,您发送的列表是空的。从我看到的情况来看,只有在重新启动活动时才能将项目添加到列表中。尝试在发送列表之前填充它,或者根据您的评论更改onStart()或onResume()的onRestart():
是的BuddymalPlanner是我项目的名字 请注意,无需在引用中添加项目的子项目名称。因此,请更改以下代码行:
ref = FirebaseDatabase.getInstance().getReference().child("buddymealplanneruser").
child("Products");
只是为了:
ref = FirebaseDatabase.getInstance().getReference().child("Products");
根据你的评论:
是的BuddymalPlanner是我项目的名字 请注意,无需在引用中添加项目的子项目名称。因此,请更改以下代码行:
ref = FirebaseDatabase.getInstance().getReference().child("buddymealplanneruser").
child("Products");
只是为了:
ref = FirebaseDatabase.getInstance().getReference().child("Products");
将代码放在onRestart()中,放在onResume()中,而不是放在headupdate中:同样,my recyclerview
BuddymalPlannerUser中没有显示任何内容。您的项目名称是什么?请同时回复@AlexMamoyes,BuddymalPlanner是我的项目名称(回复@AlexMamo)将您的代码放在onRestart()中,而不是onResume()中更新:同样,my recyclerviewBuddymalPlanner中没有显示任何内容用户是您的项目名称吗?还请回复@AlexMamoyes,BuddymalPlanner是我的项目名称(回复@AlexMamo)谢谢,并注意到我将尝试使用onStart(),因为我已经尝试使用onResume(),但仍然相同。更新:sameI刚刚检查了你链接的视频,他覆盖的方法实际上是onStart()。我认为问题是你仍然发送空列表。试着完全按照视频上说的去做。由于某些原因,适配器可能无法获取新数据。非常感谢。我现在就做。感谢您尝试帮助我。谢谢,并注意到我将尝试使用onStart(),因为我已经尝试使用onResume(),但仍然相同。更新:sameI刚刚检查了你链接的视频,他覆盖的方法实际上是onStart()。我认为问题是你仍然发送空列表。试着完全按照视频上说的去做。由于某些原因,适配器可能无法获取新数据。非常感谢。我现在就做。谢谢你帮我摆脱困境哦,我的上帝,非常感谢你,现在一切都好了。非常感谢你,先生。你救了我的天啊,太感谢你了,一切都修好了。非常感谢你,先生。你救了我一天