Java Android Удаляет элемент повторного просмотра

#java #android #android-recyclerview

Вопрос:

Я разрабатываю действие, которое показывает сообщения пользователей, за которыми они следили. Для этого я настроил запрос так, чтобы он указывал на следующего пользователя, и извлек информацию, вставив ее в представление карты на держателе onBindViewHolder таким образом:

 FirestoreRecyclerOptions<GetInfoPost> options
                = new FirestoreRecyclerOptions.Builder<GetInfoPost>()
                .setQuery(FirebaseFirestore.getInstance().collection("following").document(fAuth.getCurrentUser().getUid()).collection("/userFollowing").limit(1000), GetInfoPost.class)
                .build();


        FirestoreRecyclerAdapter<GetInfoPost, FindFriendsViewHolder> firestoreRecyclerAdapter

                =new FirestoreRecyclerAdapter<GetInfoPost, FindFriendsViewHolder>(options) {

            @Override
            protected void onBindViewHolder(@NonNull FindFriendsViewHolder findFriendsViewHolder, int i, @NonNull GetInfoPost getInfoPost) {

                final String listUserId = getSnapshots().getSnapshot(i).getId();




                FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
                Query userPostsRef = rootRef.collection("post").document(listUserId).collection("userPosts").limit(1);
                userPostsRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<QuerySnapshot> task) {
                        if (task.isSuccessful()) {
                            String postID = "";
                            for (QueryDocumentSnapshot document : task.getResult()) {
                                //Toast.makeText(MainActivity.this, document.getId()   "", Toast.LENGTH_SHORT).show();
                                postID = document.getId();
                            }

                            String finalPostID = postID;

                            if(finalPostID.equals("")){

                                return;
                            }

                            FirebaseFirestore.getInstance().collection("likes").document(finalPostID).collection("postLikes").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                                @Override
                                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                                    if(task.isSuccessful()){

                                        int count = 0;
                                        for (DocumentSnapshot document : task.getResult()) {
                                            count  ;
                                        }
                                        Log.d("TAG", count   "");
                                        findFriendsViewHolder.txtLikenmb.setText(count   "");
                                    }
                                }
                            });
 

Кажется, все работает, за исключением того, что, когда у пользователя, который следует за вами (или нескольких пользователей), нет поста, повторный просмотр все равно создает элемент, и чтобы не аварийно завершить работу приложения, я сделал это:

                          if(finalPostID.equals("")){

                                return;
                            }
 

Но я бы не хотел показывать этот пустой пост:

введите описание изображения здесь

Итак, есть ли способ удалить элемент из просмотра вторсырья?

(Я пытался рассмотреть похожие вопросы, но все они использовали список массивов или что-то в этом роде, поэтому они мне не помогли)

Комментарии:

1. Я не думаю, что использование запросов firebase, подобных userPostsRef.get().addOnCompleteListener in onBindViewHolder , является хорошим подходом, потому что это позволяет потреблять квоту каждый раз, когда RecyclerView перерабатывает представления, даже если они уже были извлечены ранее.

2. @Zain, возможно, вы правы, но это единственный способ, который я нашел, чтобы показывать сообщения подписанных пользователей

3. @Zain вы не знаете, есть ли способ удалить элемент?