I have an App which downloads data from Firebase and displays it in a RecyclerView and this works fine. What I want to do is show or hide an input element in the XML when certain conditions apply. The condition of 'yes' or 'no' is downloaded from Firebase.
It sort of works but only hides the TextView in the first item of the RecyclerView listing. How do I get it to apply to all the listed items? I will add the code and a screenshot.
Code:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menus);
setUpRecyclerView();
}
private void setUpRecyclerView() {
// get menu type from MenuSelectListActivity
selectedMenu = getIntent().getStringExtra("myMenuSelected");
//get Firestore db and use selected menu for listing
FirebaseFirestore db = FirebaseFirestore.getInstance();
CollectionReference notebookRef = db.collection(selectedMenu);
FirestoreRecyclerOptions<NoteAdapter> options = new FirestoreRecyclerOptions.Builder<NoteAdapter>()
.setQuery(query, NoteAdapter.class)
.build();
adapter = new Note(options);
final RecyclerView recyclerView = findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
DocumentReference docRef = db.collection(“delivery status”).document(“****************”);
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 myDeliveryStatus = document.getString("deliverystatus");
// if delivery status yes then allow the order to be made
if (myDeliveryStatus.equals("yes")) {
// show quantity input TextView
TextView text_quantity = (TextView) findViewById(R.id.text_view_quantity);
//Toggle
if (text_quantity.getVisibility() == View.INVISIBLE)
text_quantity.setVisibility(View.VISIBLE);
else
text_quantity.setVisibility(View.VISIBLE);
adapter.setOnItemClickListener(new Note.OnItemClickListener() {
@Override
public void onItemClick(DocumentSnapshot documentSnapshot, int position) {
String myTitle = ((TextView) recyclerView.findViewHolderForAdapterPosition(position).itemView.findViewById(R.id.text_view_title)).getText().toString();
String myPrice = ((TextView) recyclerView.findViewHolderForAdapterPosition(position).itemView.findViewById(R.id.text_view_price)).getText().toString();
String myNumberOrdered = ((TextView) recyclerView.findViewHolderForAdapterPosition(position).itemView.findViewById(R.id.text_view_quantity)).getText().toString();
***** do various calculations on the data downloaded from Firebase. Not relevant to this question so not included
}
// if no do nothing
else if (myDeliveryStatus.equals("no")) {
TextView text_quantity = (TextView) findViewById(R.id.text_view_quantity);
//Toggle to hide TextView
if (text_quantity.getVisibility() == View.VISIBLE)
text_quantity.setVisibility(View.INVISIBLE);
else
text_quantity.setVisibility(View.INVISIBLE);
}
} else {
// Log.d(TAG, "No such document");
}
} else {
// Log.d(TAG, "get failed with ", task.getException());
}
}
});
}
Code for Adapter:
public class NoteAdapter {
private String title;
private String description;
private double price;
private int priority;
private int quantity;
private String status;
public NoteAdapter() {
//empty constructor needed
}
public NoteAdapter(String title, String description, double price, int priority, int quantity) {
this.title = title;
this.description = description;
this.price = price;
this.priority = priority;
this.quantity = quantity;
this.status = status;
}
public String getTitle() {
return title;
}
public String getDescription() {
return description;
}
public double getPrice() {
return price;
}
public int getPriority() {
return priority;
}
public int getQuantity() {
return quantity;
}
public String getStatus() {
return status;
}
}