Я пытаюсь открыть одно сообщение в блоге из списка сообщений в блоге, созданных с использованием адаптера утилизатора. Я не использую какой-либо адаптер для одного сообщения в блоге, над которым я работаю, это домашнее приложение, где пользователи могут публиковать свои дома, ставить лайки и комментировать другие. То, что я пытаюсь сделать, это просмотреть один пост в блоге, когда этот пост выбран. Поэтому, чтобы это работало, мне нужно получить идентификатор документа для выбранной записи в блоге, чтобы я мог извлечь его из базы данных 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;
}
}
Когда я нажимаю кнопку просмотра дома, я вижу только содержимое этого поста
содержимое выбранного поста должно быть просмотрено здесь
Структура базы данных