列表未从活动传递到回收站适配器

问题描述 投票:0回答:1

我正在尝试将ArrayList传递给我的回收站适配器类。我已经在代码中成功实现了2个其他回收器视图,但是在这种情况下,将传递等于null的数组列表。这是我的活动代码。

public class PlacedOrders extends AppCompatActivity {

private Toolbar tb;
private User u;
private ArrayList<OrderModel> orderList = new ArrayList<>();
private DatabaseReference root = FirebaseDatabase.getInstance().getReference();
private DatabaseReference ordersReference;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_placed_orders);

    tb = findViewById(R.id.customToolbar);
    setSupportActionBar(tb);

    Intent i = getIntent();
    u = i.getParcelableExtra("USER_DATA");

    ordersReference = root.child("Orders").child(u.getUserId());
    setRecyclerView();
}

public void setRecyclerView(){

    ordersReference.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for(DataSnapshot ds : dataSnapshot.getChildren()){
                OrderModel om = (ds.getValue(OrderModel.class));
                orderList.add(om);
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

    RecyclerView recyclerView = findViewById(R.id.recycler_view_storeOrders_parent);
    recyclerView.setHasFixedSize(false);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    PlacedOrderParentAdapter placedOrderParentAdapter = new PlacedOrderParentAdapter(this, orderList);
    recyclerView.setAdapter(placedOrderParentAdapter);

    }
}

我已经使用调试器检查了for循环,在循环中成功填充了数组,但是一旦循环结束,它的大小就会降为零。帮助将不胜感激。

android firebase android-recyclerview android-arrayadapter recycler-adapter
1个回答
0
投票

在setAdapter之前,您可以尝试以下操作:

public void setRecyclerView(){

RecyclerView recyclerView = findViewById(R.id.recycler_view_storeOrders_parent);
recyclerView.setHasFixedSize(false);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
PlacedOrderParentAdapter placedOrderParentAdapter = new PlacedOrderParentAdapter(this, orderList);
recyclerView.setAdapter(placedOrderParentAdapter);

ordersReference.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()){
            OrderModel om = (ds.getValue(OrderModel.class));
            orderList.add(om);
        }
       placedOrderParentAdapter.notifyDataSetChanged();
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {

    }
});

}
© www.soinside.com 2019 - 2024. All rights reserved.