在我的应用程序中,有一个片段包含一个可扩展的RecyclerView从Firebase Firestore获取数据,其中的每个项目都有一个按钮,单击该按钮可以更改Firestore中的某些数据,这些数据会以某种方式影响项目。现在的问题是:当运行应用程序并单击按钮时,直到刷新片段,数据才会更改。
fragment.java:
View root = inflater.inflate(R.layout.fragment_dashboard, container, false); final String UserId =currentUser.getUid(); final RecyclerView recyclerView = root.findViewById(R.id.recyclerview); recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); db.collectionGroup("Id").whereEqualTo("id" , UserId).get() .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { @Override public void onComplete(@NonNull Task<QuerySnapshot> task) { final List<Company> Parent = new ArrayList<>(); for (QueryDocumentSnapshot document : task.getResult()) { final List<String> grades = (List<String>) document.get("tagsG"); CollectionReference collectionReference = document.getReference().getParent(); final List<Product> Child = new ArrayList<>(); for (int i = 0; i < grades.size(); i++) { final String gg = grades.get(i); collectionReference.document(UserId).collection(gg).get() .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { @Override public void onComplete(@NonNull Task<QuerySnapshot> task) { for (QueryDocumentSnapshot document : task.getResult()) { String name = document.getString("std_name"); String sub = document.getString("std_subject"); String region = document.getString("std_region"); Child.add(new Product(name, sub, region, gg)); } } }); } Parent.add(new Company("new", Child)); productAdapter = new ProductAdapter(Parent); recyclerView.setAdapter(productAdapter); } } }); return root;
ViewHolder.java
public class ProductViewHolder extends ChildViewHolder { private FirebaseFirestore db = FirebaseFirestore.getInstance(); private FirebaseAuth mAuth=FirebaseAuth.getInstance(); private FirebaseUser currentUser= mAuth.getCurrentUser(); private String UserId =currentUser.getUid(); private TextView name; private TextView sTextView; private TextView region; private Button addButton; private String phoneOfstd; private String grade; private ProductAdapter productAdapter; public ProductViewHolder(View itemView) { super(itemView); name = itemView.findViewById(R.id.name); sTextView = itemView.findViewById(R.id.sub); region = itemView.findViewById(R.id.region); } public void bind(Product product){ name.setText(product.name); sTextView.setText(product.sub); region.setText(product.region); grade = product.grade; addButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { CollectionReference questionsRef = db.collection("Teachers checked").document("courses").collection("Id"); DocumentReference docRef = questionsRef.document(UserId).collection(grade).document(phoneOfstd); docRef.update("approvedStd", 1); productAdapter.notifyDataSetChanged(); } }); } }
Product.java
public class Product implements Parcelable {
public final String name;
public final String sub;
public final String region;
public final String grade;
public Product(String name, String sub, String region, String grade) {
this.name = name;
this.sub = sub;
this.region = region;
this.grade = grade;
}
protected Product(Parcel in) {
name = in.readString();
sub = in.readString();
region = in.readString();
grade = in.readString();
}
public static final Creator<Product> CREATOR = new Creator<Product>() {
@Override
public Product createFromParcel(Parcel in) {
return new Product(in); }
@Override
public Product[] newArray(int size) {
return new Product[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeString(sub);
dest.writeString(region);
dest.writeString(grade);
}
}
在我的应用程序中,有一个包含可扩展RecyclerView的片段,该片段可从Firebase Firestore获取数据,其中的每个项目都有一个按钮,单击该按钮可更改Firestore中影响...的某些数据...