有没有一种方法可以像使用ListView或RecyclerView一样使用firebaseUI填充微调器项目?

时间:2018-11-22 10:51:54

标签: java android xml firebase-realtime-database firebaseui

使用childevent侦听器可以很好地从Firebase实时数据库填充微调器,但效果不如使用firebaseUI。 该文档仅涵盖recyclerview和listview,但我想将其用于微调器。

 Query query = FirebaseDatabase.getInstance().getReference("Labs");

        FirebaseListOptions<Labs> options = new FirebaseListOptions.Builder<Labs>().setQuery(query, Labs.class).build();


        FirebaseListAdapter<Labs> firebaseListAdapter = new FirebaseListAdapter<Labs>(options) {
            @Override
            protected void populateView(@NonNull View v, @NonNull Labs model, int position) {

            }


        };

        spinner.setAdapter(firebaseListAdapter);

我只是不知道如何在此处将我的模型对象与视图绑定。

2 个答案:

答案 0 :(得分:0)

您将有两个选择: 一种是通过从查询获得的数据列表初始化ArrayAdapter

ArrayAdapter<String> adapter;
adapter = new ArrayAdapter<String>(this,   android.R.layout.simple_spinner_item,querylistData);
spinner.setAdapter(adapter);

第二,您可以将数据绑定到文本视图,如下所示:

FirebaseListAdapter<Labs> firebaseListAdapter = new FirebaseListAdapter<Labs>(this, Labs.class ,android.R.layout.simple_spinner_item, query) {
   protected void populateView(View v,Lab model, int position)
     { 


         ((TextView)v.findViewById(android.R.id.text1)).setText(model.getName());

     }
 };
 spinner.setAdapter(firebaseListAdapter);

答案 1 :(得分:0)

您的代码中有两个问题。首先,您遇到以下错误:

layout cannot be null

因为您没有在populateView()方法中分配任何布局。在您的代码中,此方法为空。因此,您应该创建一个自定义布局,其中每个元素可以包含一个TeexView,这将有助于您解决此问题。

第二个问题是您正在使用FirebaseListAdapter,但不听任何地方的更改。要解决此问题,请在您的onStart()方法中使用以下代码行:

firebaseListAdapter.startListening();

也不要忘记通过在您的onStop()方法中添加以下代码行来将其删除:

if(firebaseListAdapter != null) {
    firebaseListAdapter.stopListening();
}