#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. Документ, который я хотел бы получить, является документом, выбранным пользователем