0

I am using recycler view with filterable implementation . my code is working fine . I have two button in view holder which will appear according to firebase database status. When I click them the method for changing status is working all right. But when I do it second time on same button (remember the button changed according to firebase status) the method works fine but when I do it third time my app get struct and app failed to fetch data from firebase . it is just showing following in the Log

I/ple.aadhar_dha: Background concurrent copying GC freed 739900(15MB) AllocSpace objects, 0(0B) LOS objects, 49% free, 22MB/45MB, paused 33us total 102.991ms
I/ple.aadhar_dha: Background concurrent copying GC freed 1279638(26MB) AllocSpace objects, 0(0B) LOS objects, 41% free, 33MB/57MB, paused 67us total 145.459ms
I/ple.aadhar_dha: Background concurrent copying GC freed 1325698(27MB) AllocSpace objects, 0(0B) LOS objects, 34% free, 46MB/70MB, paused 51us total 185.916ms
I/ple.aadhar_dha: Background concurrent copying GC freed 1379285(28MB) AllocSpace objects, 0(0B) LOS objects, 30% free, 55MB/79MB, paused 50us total 193.702ms
I/ple.aadhar_dha: Background concurrent copying GC freed 1389025(28MB) AllocSpace objects, 0(0B) LOS objects, 25% free, 69MB/93MB, paused 33us total 295.979ms

I don't know how to handle this error please help me

Here is my User_Status class

public class User_Status extends AppCompatActivity {

    Toolbar toolbar;
    ProgressBar progressBar;
    private final List<UserHelperClass> mDataList=new ArrayList<>();
    private user_status_adapter user_status_adapter;
    TextInputLayout searchText;
    String search_string;
    SwipeRefreshLayout refreshLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_user__status);

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

        refreshLayout=findViewById(R.id.refreshLayout_user_control);
        refreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {

                getUserInformation();
                refreshLayout.setRefreshing(false);
            }
        });

        toolbar = findViewById(R.id.custome_toolbar);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            setActionBar(toolbar);
        }

        searchText=findViewById(R.id.textlayout_search_layout_user_control);
        search_string= Objects.requireNonNull(searchText.getEditText()).toString().trim();


        progressBar = (ProgressBar) findViewById(R.id.spin_kit);
        Sprite fadingCircle = new Circle();
        progressBar.setIndeterminateDrawable(fadingCircle);
        progressBar.setVisibility(View.VISIBLE);

        RecyclerView mRecylerView = findViewById(R.id.recycler_view_user_control);
        mRecylerView.setHasFixedSize(true);
        RecyclerView.LayoutManager layoutManager=new LinearLayoutManager(User_Status.this);
        user_status_adapter =new user_status_adapter(User_Status.this,mDataList);
        mRecylerView.setLayoutManager(layoutManager);
        mRecylerView.setAdapter(user_status_adapter);

        getUserInformation();

        searchText.getEditText().addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {

                user_status_adapter.getFilter().filter(s);

            }
        });


    }

    private void getUserInformation() {
        DatabaseReference mRef= FirebaseDatabase.getInstance().getReference("Users");
        mRef.orderByChild("username").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                for (DataSnapshot snapshot1:snapshot.getChildren())
                {
                    if (snapshot1.exists())
                    {
                        UserHelperClass userHelperClass=snapshot1.getValue(UserHelperClass.class);
                        assert userHelperClass !=null;
                        if(!userHelperClass.getUsername().equals("1"))
                        {
                            mDataList.add(userHelperClass);
                        }

                    }else
                    {
                        Log.d("Error","No Snapshot exists");}
                }

                progressBar.setVisibility(View.GONE);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {
                Log.d("Database Error","Failed to fatch data from the server");
            }
        });
    }
}

and this is my adapter class

public class user_status_adapter extends RecyclerView.Adapter<user_status_adapter.MyViewHolder> implements Filterable {

    private final Context mContext;
    private final List<UserHelperClass> mFilteredList;
    private final List<UserHelperClass> mDataList;

    public user_status_adapter(Context mContext,List<UserHelperClass>mFilteredList)
    {
        this.mContext = mContext;
        this.mFilteredList = mFilteredList;
        mDataList = new ArrayList<>(mFilteredList);
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View rootView = LayoutInflater.from(parent.getContext()).inflate(R.layout.user_status_single_row, parent, false);
        return new MyViewHolder(rootView);
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
        final UserHelperClass userHelperClass = mFilteredList.get(position);

        holder.fullname.setText(userHelperClass.getFullname());
        holder.aadhar.setText(userHelperClass.getUsername());
        holder.contactno.setText(userHelperClass.getContactno());

        if (userHelperClass.getStatus().equals("Active")) {
            holder.activate.setVisibility(View.GONE);
            holder.deactivate.setVisibility(View.VISIBLE);
        } else {
            holder.deactivate.setVisibility(View.GONE);
            holder.activate.setVisibility(View.VISIBLE);
        }


        String uid = userHelperClass.getUid();
        String username = userHelperClass.getUsername();
        String fullname = userHelperClass.getFullname();

        holder.deactivate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setWarningDialog("Deactivate", username, uid);
            }
        });

        holder.activate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setWarningDialog("Activate", username, uid);
            }
        });
    }

    @Override
    public int getItemCount() {
        return mFilteredList.size();
    }

    @Override
    public Filter getFilter() {
        return filteredList;
    }

    //filter function
    private final Filter filteredList = new Filter() {
        @Override
        protected FilterResults performFiltering(CharSequence constraint) {
            List<UserHelperClass> filterlist = new ArrayList<>();
            if (constraint == null || constraint.length() == 0) {
                filterlist.addAll(mDataList);
            } else {
                String pattern = constraint.toString().toLowerCase().trim();
                for (UserHelperClass item : mDataList) {
                    if ((item.getFullname().toLowerCase().contains(pattern) && (item.getStatus().equals("Active"))) || (item.getFullname().toLowerCase().contains(pattern) && (item.getStatus().equals("Deactive")))) {
                        filterlist.add(item);
                    }
                }
            }
            FilterResults filterResults = new FilterResults();
            filterResults.values = filterlist;
            return filterResults;
        }

        @Override
        protected void publishResults(CharSequence constraint, FilterResults results) {
            mFilteredList.clear();
            mFilteredList.addAll((List) results.values);
            notifyDataSetChanged();
        }
    };

    //view holder class
    public static class MyViewHolder extends RecyclerView.ViewHolder{
        TextView fullname, aadhar, contactno;
        Button activate, deactivate;
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            fullname = itemView.findViewById(R.id.user_status_single_name);
            aadhar = itemView.findViewById(R.id.user_status_single_aadhar);
            contactno = itemView.findViewById(R.id.user_status_single_contact);

            activate = itemView.findViewById(R.id.user_status_active_button);
            deactivate = itemView.findViewById(R.id.user_status_deactive_button);

        }
    }

    private void setWarningDialog(String string, String username, String uid) {

        new KAlertDialog(mContext, KAlertDialog.WARNING_TYPE)
                .setTitleText("   !! Warning !!   ")
                .setTitleTextSize(28)
                .setContentText("\n Are you sure want to " + string + " User")
                .setContentTextSize(18)
                .setConfirmText("Yes")
                .showConfirmButton(true)
                .setCancelText("No")
                .showCancelButton(true)
                .confirmButtonColor(R.drawable.button_background_white, mContext)
                .cancelButtonColor(R.drawable.button_background, mContext)
                .setConfirmClickListener(new KAlertDialog.KAlertClickListener() {
                    @Override
                    public void onClick(KAlertDialog kAlertDialog) {
                        if (string.equals("Deactivate")) {
                            setDeactiveUser(username, uid);
                            kAlertDialog.dismissWithAnimation();
                        } else {
                            setActiveUser(username, uid);
                            kAlertDialog.dismissWithAnimation();
                        }
                    }
                })
                .setCancelClickListener(new KAlertDialog.KAlertClickListener() {
                    @Override
                    public void onClick(KAlertDialog sDialog) {
                        sDialog.dismissWithAnimation();

                    }


                })
                .show();


    }

    private void setDeactiveUser(String uname, String UID) {
        DatabaseReference mRef = FirebaseDatabase.getInstance().getReference("Users");
        mRef.child(uname).child("status").setValue("Deactive").addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                DatabaseReference mRefuid = FirebaseDatabase.getInstance().getReference("authenticated_User/Users");
                mRefuid.child(UID).child("status").setValue("Deactive").addOnSuccessListener(new OnSuccessListener<Void>() {
                    @Override
                    public void onSuccess(Void aVoid) {
                        // setSuccessfulDialog("Deactivated");
                        DatabaseReference mRefData_Entry=FirebaseDatabase.getInstance().getReference("User_Data_Entry");
                        mRefData_Entry.child(uname).addValueEventListener(new ValueEventListener() {
                            @Override
                            public void onDataChange(@NonNull DataSnapshot snapshot) {
                                for (DataSnapshot snapshot1:snapshot.getChildren())
                                {   snapshot1.child("status").getRef().setValue("Deactive");

                                    //DatabaseReference mRefset=FirebaseDatabase.getInstance().getReference("User_Data_Entry");
                                    //mRefset.child(uname).child(snapshot.getKey()).child("status").setValue("Deactive");
                                }

                            }

                            @Override
                            public void onCancelled(@NonNull DatabaseError error) {
                              //  setDatabaseErrorDialog();
                            }
                        });

                        setSuccessfulDialog("Deactivated");
                    }
                });

            }
        });
    }

    private void setActiveUser(String uname, String UID) {
        DatabaseReference mRef = FirebaseDatabase.getInstance().getReference("Users");
        mRef.child(uname).child("status").setValue("Active").addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                DatabaseReference mRefuid = FirebaseDatabase.getInstance().getReference("authenticated_User/Users");
                mRefuid.child(UID).child("status").setValue("Active").addOnSuccessListener(new OnSuccessListener<Void>() {
                    @Override
                    public void onSuccess(Void aVoid) {
                        // setSuccessfulDialog("Activated");
                        DatabaseReference mRefData_Entry=FirebaseDatabase.getInstance().getReference("User_Data_Entry");
                        mRefData_Entry.child(uname).addValueEventListener(new ValueEventListener() {
                            @Override
                            public void onDataChange(@NonNull DataSnapshot snapshot) {
                                for (DataSnapshot snapshot1:snapshot.getChildren())
                                {
                                    snapshot1.child("status").getRef().setValue("Active");
                                }

                            }

                            @Override
                            public void onCancelled(@NonNull DatabaseError error) {
                                //setDatabaseErrorDialog();
                            }
                        });

                        setSuccessfulDialog("Activated");
                    }
                });

            }
        });
    }

    private void setSuccessfulDialog(String string) {

        new KAlertDialog(mContext, KAlertDialog.CUSTOM_IMAGE_TYPE)
                .setTitleText("   !! Successful !!   ")
                .setTitleTextSize(28)
                .setContentText("Good Job !!!\nUser has been Successfully " + string)
                .setContentTextSize(18)
                .setConfirmText("OK")
                .setCustomImage(R.drawable.check, mContext)
                .showConfirmButton(true)
                .confirmButtonColor(R.drawable.button_background_white, mContext)
                .setConfirmClickListener(new KAlertDialog.KAlertClickListener() {
                    @Override
                    public void onClick(KAlertDialog kAlertDialog) {
                        kAlertDialog.dismissWithAnimation();
                        Intent intent = new Intent(mContext, User_Status.class);
                        mContext.startActivity(intent);
                        ((User_Status) mContext).finish();
                    }
                })
                .show();


    }
}

Logcat

2021-04-08 21:19:47.513 4696-4803/com.example.aadhar_dhar D/NetworkSecurityConfig: No Network Security Config specified, using platform default
2021-04-08 21:19:51.189 4696-4696/com.example.aadhar_dhar W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@a999727
2021-04-08 21:19:51.194 4696-4696/com.example.aadhar_dhar V/Monotype: SetAppTypeFace- try to flip, app = com.example.aadhar_dhar
2021-04-08 21:19:51.194 4696-4696/com.example.aadhar_dhar V/Monotype:     Typeface getFontPathFlipFont - systemFont = default#default
2021-04-08 21:19:58.307 4696-4696/com.example.aadhar_dhar W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@c72c6ae
2021-04-08 21:19:58.311 4696-4696/com.example.aadhar_dhar V/Monotype: SetAppTypeFace- try to flip, app = com.example.aadhar_dhar
2021-04-08 21:19:58.311 4696-4696/com.example.aadhar_dhar V/Monotype:     Typeface getFontPathFlipFont - systemFont = default#default
2021-04-08 21:20:08.284 4696-4696/com.example.aadhar_dhar W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@81450f9
2021-04-08 21:20:08.288 4696-4696/com.example.aadhar_dhar V/Monotype: SetAppTypeFace- try to flip, app = com.example.aadhar_dhar
2021-04-08 21:20:08.288 4696-4696/com.example.aadhar_dhar V/Monotype:     Typeface getFontPathFlipFont - systemFont = default#default
2021-04-08 21:20:08.448 4696-4712/com.example.aadhar_dhar W/System: A resource failed to call close. 
2021-04-08 21:20:22.358 4696-4696/com.example.aadhar_dhar W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@9bceedc
2021-04-08 21:20:22.363 4696-4696/com.example.aadhar_dhar V/Monotype: SetAppTypeFace- try to flip, app = com.example.aadhar_dhar
2021-04-08 21:20:22.363 4696-4696/com.example.aadhar_dhar V/Monotype:     Typeface getFontPathFlipFont - systemFont = default#default
2021-04-08 21:20:24.288 4696-4710/com.example.aadhar_dhar I/ple.aadhar_dha: Background concurrent copying GC freed 1597078(32MB) AllocSpace objects, 0(0B) LOS objects, 39% free, 37MB/61MB, paused 27us total 134.621ms
2021-04-08 21:20:25.763 4696-4710/com.example.aadhar_dhar I/ple.aadhar_dha: Background concurrent copying GC freed 2219918(43MB) AllocSpace objects, 0(0B) LOS objects, 36% free, 42MB/66MB, paused 27us total 152.031ms
2021-04-08 21:20:28.603 4696-4710/com.example.aadhar_dhar I/ple.aadhar_dha: Background concurrent copying GC freed 2126451(42MB) AllocSpace objects, 0(0B) LOS objects, 31% free, 52MB/76MB, paused 30us total 185.849ms
2021-04-08 21:20:31.675 4696-4710/com.example.aadhar_dhar I/ple.aadhar_dha: Background concurrent copying GC freed 2338306(46MB) AllocSpace objects, 0(0B) LOS objects, 27% free, 63MB/87MB, paused 29us total 211.099ms
2021-04-08 21:20:34.384 4696-4710/com.example.aadhar_dhar I/ple.aadhar_dha: Background concurrent copying GC freed 2581184(51MB) AllocSpace objects, 0(0B) LOS objects, 25% free, 68MB/92MB, paused 30us total 223.458ms
2021-04-08 21:20:37.016 4696-4710/com.example.aadhar_dhar I/ple.aadhar_dha: Background concurrent copying GC freed 2775023(53MB) AllocSpace objects, 0(0B) LOS objects, 24% free, 74MB/98MB, paused 49us total 236.490ms
2021-04-08 21:20:39.808 4696-4710/com.example.aadhar_dhar I/ple.aadhar_dha: Background concurrent copying GC freed 2932710(56MB) AllocSpace objects, 0(0B) LOS objects, 24% free, 75MB/99MB, paused 72us total 232.474ms

Thank you so much in advance if you solve my problem

  • 1
    What do you mean by "failed"? Are crashes? If that's the case, there is also a stack trace. Please look that up on logcat, and add it to your question. – Alex Mamo Apr 08 '21 at 15:07
  • @AlexMamo application is not crashing...only it stuck I am restarting activity from the successfulDialoge method recycler view unable to fatch data from the firebase and progress bar is visible. everything working fine just the recyclerview is not fatching data when i do it third time – Vikas Rathore Apr 08 '21 at 15:26

0 Answers0