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



使用childevent监听器可以很好地从Firebase实时数据库中填充微调器,但不如使用firebaseUI有效。文档只涵盖了recycleview和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);

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

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

layout cannot be null

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

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

firebaseListAdapter.startListening();

不要忘了在onStop()方法中添加以下代码行来删除一次不需要的代码:

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

您有两个选项:一种方法是通过从查询中获得的数据列表初始化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);

相关内容

  • 没有找到相关文章

最新更新