【发布时间】:2019-01-14 16:58:27
【问题描述】:
所以我正在使用 firebase 来检索一些产品。我已经登录并且每次单击时都会通过数据。但显然recyclerview只显示一次数据。
这里是显示该问题的视频链接。 video link
设置 RecyclerView
private void setupRecyclerView() {
Log.d(TAG, "setupRecyclerView: setting up recyclerview");
productList = new ArrayList<>();
rv.setHasFixedSize(true);
rv.setLayoutManager(new LinearLayoutManager(getActivity()));
this.adapter = new ProductListAdapter(productList);
rv.setAdapter(adapter);
}
从 Firebase 获取产品
private void getProducts() {
//Setting up Event Listener
productsListener = new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
Product p = dataSnapshot.getValue(Product.class);
Log.d(TAG, "onChildAdded: Adding Product = "+p.toString());
//Pass Products to Proucts fragment
addProduct(p);
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
Log.d(TAG, "onChildChanged: child Product changed, snapshot="+dataSnapshot.toString());
editProduct(dataSnapshot.getValue(Product.class));
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
};
//Get Products from firebase
FirebaseDatabase.getInstance().getReference().child("user_photos").child(mFirebaseStoreID).addChildEventListener(productsListener);
}
添加产品方法
public void addProduct(Product newProduct) {
double price=0;
if (!newProduct.getAssociated_product_price().equals("")){
price = Double.valueOf(newProduct.getAssociated_product_price());
}
productList.add(new ProductCard(newProduct.getAssociated_product_name(), newProduct.getAssociated_product_description(), newProduct.getImage_path(), price,newProduct.getPhoto_id()));
adapter.notifyItemInserted(productList.size() - 1);
Log.d(TAG, "addProduct: Product added total size= " + productList.size() + " and adapter size= " + adapter.getItemCount());
}
有很多代码,如果这还不够,请告诉我。不过这种行为很奇怪。
【问题讨论】:
-
rv.setHasFixedSize(false);试试这个或完全删除该行
-
@ZaidMirza 检查您在适配器中使用的
layout,root layout是否将height设置为match_parent如果有,请将其更改为wrap_content
标签: android android-recyclerview