Попытка открыть отдельный вид записи в блоге из списка записей в блоге

#java #android #google-cloud-firestore

#java #Android #google-облако-firestore

Вопрос:

Я пытаюсь открыть одно сообщение в блоге из списка сообщений в блоге, созданных с помощью адаптера recycler. Я не использую какой-либо адаптер для действия с одной записью в блоге, я работаю над домашним приложением, в котором пользователи могут публиковать свои записи, ставить лайки и комментировать другие. Что я пытаюсь сделать, так это просмотреть одну запись в блоге, когда эта запись выбрана. Итак, чтобы это сработало, мне нужно получить идентификатор документа выбранной записи в блоге, чтобы я мог извлечь его из Firestore DB и отобразить в одном представлении записи в блоге. Проблема в том, что мне трудно получить документ и отобразить его, поскольку документ имеет автоматически созданный ключ.

Изначально я создал расширяемый класс, который передавал бы автоматически созданный идентификатор документа классу модели, который я создал для отправки документов в адаптер recycler, я думаю о том, чтобы использовать тот же расширяемый класс, чтобы передавать идентификатор документа в отдельный просмотр записи в блоге, как я могу это реализовать?

Одна запись в блоге java:

 package com.example.android.houseap;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import com.example.android.houseap.Listings.HousePost;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;

public class SingleHousePost extends AppCompatActivity {

    private  String mPost_key=null;
    private FirebaseFirestore firebaseFirestore;
    private TextView locationTextView;
    private DocumentReference documentRef;
    private FirebaseAuth firebaseAuth;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.single_house_post);

        firebaseFirestore=FirebaseFirestore.getInstance();
        firebaseAuth=FirebaseAuth.getInstance();


        String house_post_id = String.valueOf(HousePostId.class);  //method 1




        mPost_key=firebaseFirestore.collection("House_Post").document(house_post_id).getId();


        locationTextView=findViewById(R.id.location_city_town);

        String currentUser=firebaseAuth.getCurrentUser().getUid();


        DocumentReference docRef = firebaseFirestore.collection("House_Posts").document(mPost_key);
        docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
            @Override
            public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                if (task.isSuccessful()) {
                    DocumentSnapshot document = task.getResult();
                    if (document.exists()) {
                        String locationHouse=task.getResult().getString("location");

                        locationTextView.setText(locationHouse);

                    } else {

                        Toast.makeText(SingleHousePost.this, "DATA DOES NOT EXISTS,PLEASE REGISTER", Toast.LENGTH_LONG).show();


                    }
                } else {

                    Toast.makeText(SingleHousePost.this, "CANNOT RETRIEVE DATA", Toast.LENGTH_LONG).show();


                }
            }
        });








    }


}


Extendable class:

        package com.example.android.houseap;
    import android.support.annotation.NonNull;

    import com.google.firebase.firestore.Exclude;

    public class HousePostId {

        @Exclude
        public  String HousePostId;

        public<T extends HousePostId>T withId(@NonNull final String id ){

            this.HousePostId=id;
            return (T) this;
        }

    }
  

Когда я нажимаю кнопку просмотра дома, я должен видеть содержимое только этого домашнего поста

содержимое выбранной домашней записи следует просмотреть здесь

Структура базы данных

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

1. Пожалуйста, добавьте схему вашей базы данных и укажите точный документ, который вы хотите получить.

2. Документ, который я хотел бы получить, является документом, выбранным пользователем