Попытка открыть один вид поста в блоге из списка постов в блоге. - PullRequest
0 голосов
/ 21 марта 2019

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

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

Сообщение в блоге 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;
        }

    }

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

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

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

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