Create A Cardview Only If Object Have A Specific Value In Firebase
I have objects in my firebase database called userForm . Each userForm have an instance variable called isPassedInspection that is either set to true or false in my firebase. users
Solution 1:
Use your own adapter class. you can see the codes. UserForm.class
publicclassUserForm {
String name,birthday,hobby;
boolean isPassedInspection;
publicUserForm(String name, String birthday, String hobby, boolean isPassedInspection) {
this.name = name;
this.birthday = birthday;
this.hobby = hobby;
this.isPassedInspection = isPassedInspection;
}
publicUserForm() {
}
publicStringgetName() {
return name;
}
publicvoidsetName(String name) {
this.name = name;
}
publicStringgetBirthday() {
return birthday;
}
publicvoidsetBirthday(String birthday) {
this.birthday = birthday;
}
publicStringgetHobby() {
return hobby;
}
publicvoidsetHobby(String hobby) {
this.hobby = hobby;
}
publicbooleanisPassedInspection() {
return isPassedInspection;
}
publicvoidsetPassedInspection(boolean passedInspection) {
isPassedInspection = passedInspection;
}}
// adapter class
publicclassFormsAdapterextendsRecyclerView.Adapter<FormsViewHolder> {
privateArrayMap<String,UserForm> formsList=newArrayMap<>();
/*use arrayMap to get from data and key */publicFormsAdapter() {
formsList=newArrayMap<>();
}
@OverridepublicFormsViewHolderonCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
// inflating card view itemView v = inflater.inflate(R.layout.form_card, parent, false);
returnnewFormsViewHolder(v);
}
@OverridepublicvoidonBindViewHolder(FormsViewHolder holder, int position) {
String itemKey=formsList.keyAt(position);
UserForm userForm=formsList.get(itemKey);
// set one forms data
holder.setFormsData(userForm);
holder.view.setOnClickListener(newView.OnClickListener() {
@OverridepublicvoidonClick(View view) {
// handle click event
}
});
}
@Overridepublic int getItemCount() {
return formsList.size();
}
publicvoidaddAFormItem(String key,UserForm userForm)
{
if (!formsList.containsKey(key))
{
formsList.put(key,userForm);
notifyItemInserted(formsList.size());
}
} }
ViewHolder class
publicclassFormsViewHolderextendsRecyclerView.ViewHolder {
public View view;
publicFormsViewHolder(View itemView) {
super(itemView);
view=itemView;
}
publicvoidsetFormsData(UserForm userForm)
{
// initialise card views items and set value in them
TextView userName=(TextView)view.findViewById(R.id.userName);
userName.setText(userForm.getName());
}}
your fragment
publicclassFormsListFragmentextendsFragment {
privateDatabaseReference formsRef;
privateFormsAdapter adapter;
@OverridepublicViewonCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragmentView view = inflater.inflate(R.layout.fragment_forms_list, container, false);
/**/RecyclerView recyclerView=(RecyclerView)view.findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(newLinearLayoutManager(getContext()));
adapter=newFormsAdapter();
recyclerView.setAdapter(adapter);
formsRef= FirebaseDatabase.getInstance().getReference().child("forms");
formsRef.addChildEventListener(newChildEventListener() {
@OverridepublicvoidonChildAdded(DataSnapshot dataSnapshot, String s) {
/*add data in adapter one by one if isPassedInspection true*/String itemKey=dataSnapshot.getKey();
UserForm userForm=dataSnapshot.getValue(UserForm.class);
if (userForm.isPassedInspection())
adapter.addAFormItem(itemKey,userForm);
}
@OverridepublicvoidonChildChanged(DataSnapshot dataSnapshot, String s) {
/*when something change in data then add in adapter if isPassedInspection true*/String itemKey=dataSnapshot.getKey();
UserForm userForm=dataSnapshot.getValue(UserForm.class);
if (userForm.isPassedInspection())
adapter.addAFormItem(itemKey,userForm);
}
@OverridepublicvoidonChildRemoved(DataSnapshot dataSnapshot) {
}
@OverridepublicvoidonChildMoved(DataSnapshot dataSnapshot, String s) {
}
@OverridepublicvoidonCancelled(DatabaseError databaseError) {
}
});
return view;
}}
Post a Comment for "Create A Cardview Only If Object Have A Specific Value In Firebase"