从friebase数据库检索多个数据到recyclerview

时间:2018-02-11 22:28:34

标签: android firebase firebase-realtime-database android-recyclerview

我知道这可能是一个愚蠢的问题,但我在回收查看器中遇到了firebase实时数据库的一些问题。它要么给我一个错误信息,要么只是不刷新。但是,当我手动添加数据时,它正在工作。我已经阅读了大量解决问题的文章,但我仍然无法解决问题。我希望你们能以某种方式提供帮助。

继承我的数据库: database link

这是我的MainActivity:

public class MainActivity extends AppCompatActivity {

private RecyclerView reciclerView;
private MyAdapter adapter;
private List<ListItem> result;
private DatabaseReference myRootRef = FirebaseDatabase.getInstance().getReference();
private ListItem model = new ListItem();

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    reciclerView = findViewById(R.id.reciclerViewID);
    reciclerView.setHasFixedSize(true);
    reciclerView.setLayoutManager(new LinearLayoutManager(this));

    result = new ArrayList<>();



myRootRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
                    model = postSnapshot.getValue(ListItem.class);
                    result.add(model);
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

    /*model.setName("Johhny");
    model.setEmail("Johhny@gmail.com");
    model.setImageurl("https://uniqlo.scene7.com/is/image/UNIQLO/goods_04_172340?$detail$");*/


    adapter = new MyAdapter(this, result);
    reciclerView.setAdapter(adapter);
    adapter.notifyDataSetChanged();


}

ListItem是模型类,我也有一个DetailsActivity。

1 个答案:

答案 0 :(得分:1)

尝试在adapter.notifyDataSetChanged();方法中调用onDataChange。您希望RecyclerView检测到的列表中的每次更改后都需要调用此方法。