Как обновить sh Listview всегда с вкладками макета? - PullRequest
0 голосов
/ 16 января 2020

У меня есть макет с вкладками с 2 фрагментами:

1 - Форма для регистрации

2 - Формат для просмотра зарегистрированных документов

Вторая вкладка имеет ListView data и его код для получения данных:

public class PatologiaListaFragment extends Fragment {
    private static final String TAG = "FragmentLista";
    private FirebaseFirestore db = FirebaseFirestore.getInstance();
    private FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
    private CollectionReference usuarios;


    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View root = inflater.inflate(R.layout.fragment_patologias_lista, container, false);

    usuarios = db.collection("Usuarios").document(firebaseAuth.getCurrentUser().getUid().toString()).collection("Doencas");

    ArrayList<Doenca> doencaArrayList = new ArrayList<Doenca>();

        usuarios.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                if (task.isSuccessful()) {
                    for (QueryDocumentSnapshot document : task.getResult()) {
                       Doenca doenca = document.toObject(Doenca.class);
                        doencaArrayList.add(doenca); // add data to arraylist adapter
                        Log.i("Lets moving", doencaArrayList.toString());
                        Log.d(TAG, document.getId() + " => " + document.getData());
                    }
                    ListView listView = (ListView) root.findViewById(R.id.listViewCadastro);
                    ArrayAdapter adapter = new DoencaAdapter(getActivity(), doencaArrayList);
                    listView.setAdapter(adapter); //arrayadapter set

                } else {
                    Log.d(TAG, "Erro ao puxar documentos", task.getException());
                }
            }
        });
    return root;
    }

}

Я получаю данные на ListView адаптер с моего сервера в Firebase, когда я закрываю и открываю приложение, просмотр списка refre sh, но Мне нужно, чтобы всякий раз, когда вы двигались в одну сторону и вперед (перед вкладкой), вам необходимо обновить адаптер ListView.

Возможно? Или мне нужно перейти на RecyclerView?

1 Ответ

1 голос
/ 17 января 2020

Мне нужно, чтобы всякий раз, когда вы перемещаетесь в одну сторону и вперед (перед вкладкой), вам необходимо обновить адаптер ListView.

Как я понимаю, вам нужно получать данные в реальном время. В этом случае вы должны использовать слушателя в режиме реального времени. Согласно официальной документации относительно прослушивания нескольких документов в коллекции :

Как и в случае с документами, вы можете использовать onSnapshot() вместо get() для прослушивания результатов запрос. Это создает моментальный снимок запроса.

Таким образом, ключом для добавления функции в реальном времени является использование addSnapshotListener (слушатель EventListener) метода:

Начинает прослушивание этого запроса.

Что касается использования RecyclerView, вам решать, что лучше для вас. Это правда, что RecyclerView предлагает больше функций, но вы можете проверить эти ответы:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...