有没有办法在Tab视图中实现FirebaseListAdapter?

时间:2017-02-04 09:20:18

标签: android listview firebase-realtime-database firebaseui tabview

我在活动中创建了一个标签视图。现在,我想在每个选项卡中显示要从Firebase检索的列表项。

我可以检索并显示活动中的数据。但我不知道如何在片段中使用FirebaseListAdapterFirebaseListAdapter需要第一个参数为Activity,但如何将片段作为活动传递?

childRef = databaseReference.child(str);
FirebaseListAdapter<Leave> firebaseListAdapter = new FirebaseListAdapter<Leave>(
            this,
            Leave.class,
            R.layout.leavelistview,
            childRef
    ) {
        @Override
        protected void populateView(View v, Leave model, int position) {
            ((TextView)v.findViewById(R.id.lv_staffname)).setText(model.getName());
            ((TextView)v.findViewById(R.id.lv_type)).setText(model.getType());
            ((TextView)v.findViewById(R.id.lv_duration)).setText(model.getDuration());
        }
    };
    listView.setAdapter(firebaseListAdapter);

这是我在活动中使用的代码。但是在片段中实现这一点会给我一个错误,因为我们无法通过this获取片段。

1 个答案:

答案 0 :(得分:2)

您可以在片段上调用getActivity()将其传递给适配器。像这样:

FirebaseListAdapter<Leave> firebaseListAdapter = new FirebaseListAdapter<Leave>(
            getActivity(),
            Leave.class,
            R.layout.leavelistview,
            childRef
    ) {
        @Override
        protected void populateView(View v, Leave model, int position) {
            ((TextView)v.findViewById(R.id.lv_staffname)).setText(model.getName());
            ((TextView)v.findViewById(R.id.lv_type)).setText(model.getType());
            ((TextView)v.findViewById(R.id.lv_duration)).setText(model.getDuration());
        }
    };