【问题标题】:I want to refresh recycle adapter where data is coming from Firebase?我想刷新数据来自 Firebase 的回收适配器?
【发布时间】:2019-04-10 10:41:07
【问题描述】:

我有 ArrayList 我正在成功地将数据设置到适配器我想添加滑动以刷新适配器以检查 firebase 中可用的任何新数据以更新回收器。

    firebaseDatabase=FirebaseDatabase.getInstance();
    getFirebaseData();

}

public void getFirebaseData()
{
    databaseReference=firebaseDatabase.getReference("recyclerview");
    databaseReference.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) 
        {
            itemsModel=new ItemsModel();
            itemsModel=dataSnapshot.getValue(ItemsModel.class);
            itemsModelList.add(itemsModel);
            recyclerView.setAdapter(myAdapter);
        }

【问题讨论】:

  • 看看RecyclerView.Adapter官方documentation。根据您打算执行的操作,有方法 notifyItemInserted、notifyItemChanged 等。如果数据集发生更改,还有一个 DiffUtil 方法可以用最少的更改和动画更新 recyclerview。阅读this
  • 查看以下链接。它将帮助您实现您想要的。 stackoverflow.com/questions/46299903/…

标签: android android-recyclerview swipe


【解决方案1】:

您应该只调用一次:在 OnCreate 方法上调用 recyclerView.setAdapter(myAdapter)。

然后,当添加一个孩子时,当您在 db 中收听您的 ref 时,将调用 onChildadded 方法并在其中使用此代码:

itemsModel=new ItemsModel();
        itemsModel=dataSnapshot.getValue(ItemsModel.class);
        itemsModelList.add(itemsModel);
        myAdapter.notifydatasetchanged();

然后,每次添加孩子时,它都会显示在您的屏幕上。

【讨论】:

  • * 您无需刷新数据,因为您一直在收听数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-09
相关资源
最近更新 更多