从选定的RecyclerView-Android Studio检索Firestore文档
我是一名初学者,目前正在进行我的最后一年项目。如果这个问题很长,我真的很抱歉,我希望有人能在这方面帮助我,谢谢 预期输出:recyclerView将从FireStore数据库检索集合的所有文档。用户单击recyclerView中的一个项目后,应该从相应的FireStore文档中检索所有信息 问题:我已将firestore文档检索到我的recyclerView。但我现在的问题是,一旦用户单击recyclerView中的项目,我仍然无法从相应的FireStore文档中检索信息 错误在MyAdapter类中: MyAdapter类:从选定的RecyclerView-Android Studio检索Firestore文档,android,firebase,android-studio,google-cloud-firestore,android-recyclerview,Android,Firebase,Android Studio,Google Cloud Firestore,Android Recyclerview,我是一名初学者,目前正在进行我的最后一年项目。如果这个问题很长,我真的很抱歉,我希望有人能在这方面帮助我,谢谢 预期输出:recyclerView将从FireStore数据库检索集合的所有文档。用户单击recyclerView中的一个项目后,应该从相应的FireStore文档中检索所有信息 问题:我已将firestore文档检索到我的recyclerView。但我现在的问题是,一旦用户单击recyclerView中的项目,我仍然无法从相应的FireStore文档中检索信息 错误在MyAdapte
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
OnItemClickListener listener;
Context context;
ArrayList<User> userArrayList;
public MyAdapter(Context context, ArrayList<User> userArrayList) {
this.context = context;
this.userArrayList = userArrayList;
}
@NonNull
@Override
public MyAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(context).inflate(R.layout.item, parent,false);
return new MyViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull MyAdapter.MyViewHolder holder, int position) {
User user = userArrayList.get(position);
holder.FullName.setText(user.FullName);
holder.IDKakitangan.setText(user.IDKakitangan);
}
@Override
public int getItemCount() {
return userArrayList.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder{
TextView FullName, IDKakitangan;
OnItemClickListener listener;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
FullName = itemView.findViewById(R.id.tvPemohon);
IDKakitangan = itemView.findViewById(R.id.tvIDPemohon);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION && listener != null){
listener.onItemClick(getSnapshots().getSnapshot(position), position);
}
}
});
}
}
public interface OnItemClickListener {
void onItemClick(DocumentSnapshot documentSnapshot, int position);
}
public void setOnItemClickListener(OnItemClickListener listener){
this.listener = listener;
}
我想这可能会有帮助。嗨,谢谢你的回复。我已经尝试过了,但错误仍然在getSnapshots()上
public class MaklumBalasCuti extends AppCompatActivity {
RecyclerView recyclerView;
ArrayList<User> userArrayList;
MyAdapter myAdapter;
FirebaseFirestore db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maklum_balas_cuti);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(false);
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
db = FirebaseFirestore.getInstance();
userArrayList = new ArrayList<User>();
myAdapter = new MyAdapter(MaklumBalasCuti.this,userArrayList);
recyclerView.setAdapter(myAdapter);
EventChangeListener();
}
private void EventChangeListener(){
db.collection("Permohonan Cuti").orderBy("FullName", Query.Direction.ASCENDING)
.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot value, @Nullable FirebaseFirestoreException error) {
if (error != null){
Log.e("Pangkalan data gagal",error.getMessage());
return;
}
for (DocumentChange dc : value.getDocumentChanges()){
if (dc.getType() == DocumentChange.Type.ADDED){
userArrayList.add(dc.getDocument().toObject(User.class));
}
myAdapter.notifyDataSetChanged();
}
}
});
}
package com.example.staffhub;
import java.io.Serializable;
public class User implements Serializable {
String FullName, IDKakitangan;
public User(){}
public User(String Fullname, String IDKakitangan) {
this.FullName = Fullname;
this.IDKakitangan = IDKakitangan;
}
public String getFullName() {
return FullName;
}
public void setFullName(String FullName) {
this.FullName = FullName;
}
public String getIDKakitangan() {
return IDKakitangan;
}
public void setIDKakitangan(String IDKakitangan) {
this.IDKakitangan = IDKakitangan;
}
}