我相信我的recyclerView已成功从firebase检索数据,因为它在我的recycler视图中显示了2个cardView,这与我在Firebase中的Menu下分配的数据数量相同。
“ >>
Screenshot of my RecyclerView。
我有3个类,分别是listOnline2,MyAdapter和cMenu。 lisOnline2和MyAdapter中都有一个数组。我在listOnline2中使用数组来存储从firebase检索到的数据,并在MyAdapter中使用数组来查看cardview中的数据。下面是我对类listOnline2的编码。
`DatabaseReference currentUserRef,counterRef, ref; MyAdapter adapterR; RecyclerView listOnline21; ArrayList <cMenu> menu; private static final String TAG = "listOnline2"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate( savedInstanceState ); setContentView( R.layout.activity_list_online2 ); listOnline21= (RecyclerView) findViewById(R.id.listMenu); listOnline21.setLayoutManager( new LinearLayoutManager( listOnline2.this ) ); listOnline21.setHasFixedSize(true); menu= new ArrayList<cMenu>(); counterRef= FirebaseDatabase.getInstance().getReference().child( "Menu" ).child( "twRAlXRMSgPkA35nmMoFAuAsTdz1" ); Log.d( TAG, "Clicked ID: "+idd ); currentUserRef=FirebaseDatabase.getInstance().getReference("Menu").child( FirebaseAuth.getInstance().getCurrentUser().getUid() ); counterRef.addValueEventListener( new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { for(DataSnapshot dataSnapshot1: dataSnapshot.getChildren()){ cMenu p=dataSnapshot1.getValue(cMenu.class); menu.add(p); } Log.d( TAG, "Data of array: "+menu ); adapterR=new MyAdapter( listOnline2.this, menu ); listOnline21.setAdapter( adapterR ); } @Override public void onCancelled(@NonNull DatabaseError databaseError) { Toast.makeText(listOnline2.this, "Opsss.... Something is wrong", Toast.LENGTH_SHORT).show(); } } ); Toolbar toolbar=findViewById(R.id.toolbar); toolbar.setTitle("Food Ordering Delivery System"); setSupportActionBar(toolbar); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater= getMenuInflater(); inflater.inflate( R.menu.main_menu,menu ); return true; } @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { switch (item.getItemId()){ case R.id.action_cart: Intent toCart=new Intent( listOnline2.this, Cart.class ); startActivity( toCart ); break; case R.id.action_logout: Intent toLogin=new Intent( listOnline2.this, LoginActivity.class ); startActivity( toLogin ); break; } return super.onOptionsItemSelected( item ); }`
同时,以下是我在MyAdapter类中的代码
DatabaseReference currentUserRef,counterRef; MyAdapter adapterR; RecyclerView listOnline21; ArrayList <cMenu> menu; private static final String TAG = "listOnline2"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate( savedInstanceState ); setContentView( R.layout.activity_list_online2 ); listOnline21= (RecyclerView) findViewById(R.id.listMenu); listOnline21.setLayoutManager( new LinearLayoutManager( listOnline2.this ) ); listOnline21.setHasFixedSize(true); menu= new ArrayList<cMenu>(); counterRef= FirebaseDatabase.getInstance().getReference().child( "Menu" ).child( "twRAlXRMSgPkA35nmMoFAuAsTdz1" ); Log.d( TAG, "Clicked ID: "+idd ); currentUserRef=FirebaseDatabase.getInstance().getReference("Menu").child( FirebaseAuth.getInstance().getCurrentUser().getUid() ); counterRef.addValueEventListener( new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { for(DataSnapshot dataSnapshot1: dataSnapshot.getChildren()){ cMenu p=dataSnapshot1.getValue(cMenu.class); menu.add(p); } Log.d( TAG, "Data of array: "+menu ); adapterR=new MyAdapter( listOnline2.this, menu ); listOnline21.setAdapter( adapterR ); } @Override public void onCancelled(@NonNull DatabaseError databaseError) { Toast.makeText(listOnline2.this, "Opsss.... Something is wrong", Toast.LENGTH_SHORT).show(); } } ); Toolbar toolbar=findViewById(R.id.toolbar); toolbar.setTitle("Food Ordering Delivery System"); setSupportActionBar(toolbar); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater= getMenuInflater(); inflater.inflate( R.menu.main_menu,menu ); return true; } @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { switch (item.getItemId()){ case R.id.action_cart: Intent toCart=new Intent( listOnline2.this, Cart.class ); startActivity( toCart ); break; case R.id.action_logout: Intent toLogin=new Intent( listOnline2.this, LoginActivity.class ); startActivity( toLogin ); break; } return super.onOptionsItemSelected( item ); }
最后一个类是cMenu,如下所示:
private String fName, fDesc, fImage, fQuantity, fPrice, fId; public cMenu() { } public cMenu(String fName, String fDesc, String fImage, String fQuantity, String fPrice, String fId) { this.fName = fName; this.fDesc = fDesc; this.fImage = fImage; this.fQuantity = fQuantity; this.fPrice = fPrice; this.fId = fId; } public String getfName() { return fName; } public void setfName(String fName) { this.fName = fName; } public String getfDesc() { return fDesc; } public void setfDesc(String fDesc) { this.fDesc = fDesc; } public String getfImage() { return fImage; } public void setfImage(String fImage) { this.fImage = fImage; } public String getfQuantity() { return fQuantity; } public void setfQuantity(String fQuantity) { this.fQuantity = fQuantity; } public String getfPrice() { return fPrice; } public void setfPrice(String fPrice) { this.fPrice = fPrice; } public String getfId() { return fId; } public void setfId(String fId) { this.fId = fId; }
如何显示存储从Firebase检索到的数据的阵列中的数据?请给我一个建议,因为我花了2天时间看这些规范。预先谢谢!
我相信我的recyclerView已成功从firebase检索数据,因为它在recycler视图中显示了2个cardView,这与我在Firebase中的Menu下分配的数据数量相同。 ...
int id = FirebaseAuth.getInstance.getCurrentUser.getUid();currentUserRef = FirebaseDatabase.getInstance()。getReference()。child(“ Menu”)。child(id);