Skip to content Skip to sidebar Skip to footer

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"