Вы можете попробовать это упражнение в качестве образца, чтобы начать
SampleActivity. java
public class SampleActivity extends AppCompatActivity {
DatabaseReference mRef;
FirebaseDatabase mFirebaseDatabase;
RecyclerView mRecyclerView;
ArrayList<InnerDataModel> innerDataModelsMenu1ForAdapter;
ArrayList<InnerDataModel> innerDataModelsMenu2ForAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample);
mRecyclerView = findViewById(R.id.recyclerView);
innerDataModelsMenu1ForAdapter = new ArrayList<>();
innerDataModelsMenu2ForAdapter = new ArrayList<>();
}
@Override
protected void onStart() {
super.onStart();
getDataFromFirestore();
}
private void getDataFromFirestore() {
mFirebaseDatabase = FirebaseDatabase.getInstance();
mRef = mFirebaseDatabase.getReference("Data/");
//Get all the data from the Firbase Realtime Database
mRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
String menuType = snapshot.getKey();
if (!TextUtils.isEmpty(menuType)) {
//Write logic for each different menu type
ArrayList<InnerDataModel> innerDataModelsMenu1 = new ArrayList<InnerDataModel>();
ArrayList<InnerDataModel> innerDataModelsMenu2 = new ArrayList<InnerDataModel>();
if (menuType.equals("Menu1")) {
for (DataSnapshot snapshotInner : dataSnapshot.child("Menu1").getChildren()) {
innerDataModelsMenu1.add(snapshotInner.getValue(InnerDataModel.class));
}
runCodeForMenu1(innerDataModelsMenu1);
}
if (menuType.equals("Menu2")) {
for (DataSnapshot snapshotInner : dataSnapshot.child("Menu2").getChildren()) {
innerDataModelsMenu2.add(snapshotInner.getValue(InnerDataModel.class));
}
runCodeForMenu2(innerDataModelsMenu2);
}
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
//No Data present
}
});
}
private void runCodeForMenu2(ArrayList<InnerDataModel> children) {
innerDataModelsMenu2ForAdapter.addAll(children);
Log.d("SampleActivity", innerDataModelsMenu2ForAdapter.toString() + "");
}
private void runCodeForMenu1(ArrayList<InnerDataModel> children) {
innerDataModelsMenu1ForAdapter.addAll(children);
Log.d("SampleActivity", innerDataModelsMenu1ForAdapter.toString() + "");
}
}
InnerDataModel. java
public class InnerDataModel {
private String image;
private String title;
private String description;
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
Как только вы получите и обработаете данные из FireBase, вы можете обработать свой адаптер на основе двух глобальных ArrayLists
innerDataModelsMenu1ForAdapter
и innerDataModelsMenu2ForAdapter
и обработать его в своей деятельности, чтобы показать данные в CardView