Java 如何刷新Listview始终选项卡式布局?

Java 如何刷新Listview始终选项卡式布局?,java,android,firebase,listview,google-cloud-firestore,Java,Android,Firebase,Listview,Google Cloud Firestore,我有一个带有2个片段的选项卡式布局: 1-登记表格 2-查看已注册文档的格式 第二个选项卡有一个列表视图数据,其获取数据的代码是: 公共类patologilistafragment扩展片段{ 私有静态最终字符串标记=“FragmentLista”; 私有FirebaseFirestore db=FirebaseFirestore.getInstance(); 私有FirebaseAuth FirebaseAuth=FirebaseAuth.getInstance(); 私人收藏参考用益; @可空

我有一个带有2个片段的选项卡式布局:

1-登记表格

2-查看已注册文档的格式

第二个选项卡有一个
列表视图
数据,其获取数据的代码是:

公共类patologilistafragment扩展片段{
私有静态最终字符串标记=“FragmentLista”;
私有FirebaseFirestore db=FirebaseFirestore.getInstance();
私有FirebaseAuth FirebaseAuth=FirebaseAuth.getInstance();
私人收藏参考用益;
@可空
@凌驾
创建视图时的公共视图(@NonNull LayoutInflater inflater、@Nullable ViewGroup container、@Nullable Bundle savedInstanceState){
视图根=充气机。充气(R.layout.fragment\u patologias\u lista,容器,false);
usuarios=db.collection(“usuarios”).document(firebaseAuth.getCurrentUser().getUid().toString()).collection(“Doencas”);
ArrayList DoenCarrayList=新建ArrayList();
usuarios.get().addOnCompletListener(新的OnCompletListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
对于(QueryDocumentSnapshot文档:task.getResult()){
Doenca Doenca=document.toObject(Doenca.class);
添加(doenca);//将数据添加到arraylist适配器
i(“让我们移动”,doencarraylist.toString());
Log.d(标记,document.getId()+“=>”+document.getData());
}
ListView ListView=(ListView)root.findViewById(R.id.listViewCadastro);
ArrayAdapter=新的DoencaAdapter(getActivity(),doencaArrayList);
setAdapter(适配器);//数组适配器集
}否则{
Log.d(标记“Erro ao puxar documentos”,task.getException());
}
}
});
返回根;
}
}
我从Firebase上的服务器接收数据到
ListView
adapter,当我关闭并打开应用程序时,ListView会刷新,但我需要它,无论何时移动到一侧并向前移动(在tab之前),都需要更新ListView适配器

有可能吗?或者我需要迁移到
RecyclerView

我需要它,无论何时移动到一侧并向前移动(在制表符之前),都需要更新ListView适配器

据我所知,您需要实时获取数据。在这种情况下,您应该使用实时侦听器。根据官方文件,关于:

与文档一样,您可以使用
onSnapshot()
而不是
get()
来侦听查询结果。这将创建一个查询快照

因此,添加实时功能的关键是使用Query的方法:

开始侦听此查询

关于使用
RecyclerView
,由您决定哪个更适合您。确实,
RecyclerView
提供了更多功能,但您可以查看以下答案:


ListView ListView=(ListView)root.findViewById(R.id.listViewCadastro);ArrayAdapter=新的DoencaAdapter(getActivity(),doencaArrayList);setAdapter(适配器)//arrayadapter集合
此方法也必须更改?在回调中,您应该通知适配器。退房