How to get the IDs of the components of the recycler view adapter class and call it outside the recycler view adapter class?

234 Views Asked by At

I want to implement an android swipe layout that updates the visibility of buttons when swiped with an item touch helper. I was able to get the id of, it but is not working when changing visibility when swiped

Subroutine.class

private void setItemTouchHelper(SubroutineParentItemAdapter.ParentItemViewHolder holder, SubroutineChildItemAdapter childAdapterItem){
    ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new ItemTouchHelper.Callback() {

        @Override
        public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
            return makeMovementFlags(0, ItemTouchHelper.END | ItemTouchHelper.START);
        }

        @Override
        public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
            return false;
        }

        @Override
        public boolean isLongPressDragEnabled() {
            return false;
        }

        @Override
        public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {

            Button Remove = viewHolder.itemView.findViewById(R.id.remove_btn);

            switch (direction){
                case ItemTouchHelper.END:
                case ItemTouchHelper.START:
                    //Remove id is same as on adapter but not working when changed visibility 2131231725
                    if (Remove.getVisibility() == View.VISIBLE) {
                        Remove.setVisibility(View.GONE);
                    } else if (Remove.getVisibility() == View.GONE){
                        Remove.setVisibility(View.VISIBLE);
                    }
                    childAdapterItem.notifyDataSetChanged();
                    break;
            }
        }
    });
    itemTouchHelper.attachToRecyclerView(holder.childRecycleView);
}

Adapter.class

On view holder the button where initialized

public static class ChildItemViewHolder extends RecyclerView.ViewHolder {

        RelativeLayout itemLayout;
        TextView Title, Description;
        Button Upvote, Downvote, MarkAsDone, Remove;

        public ChildItemViewHolder(@NonNull View itemView) {
            super(itemView);
            itemLayout = itemView.findViewById(R.id.subroutine_child_item_layout);
            Title = itemView.findViewById(R.id.subroutine);
            Description = itemView.findViewById(R.id.home_item_on_click_habit_description);

            Upvote = itemView.findViewById(R.id.btn_upvote_subroutine);
            Downvote = itemView.findViewById(R.id.btn_downvote_subroutine);
            MarkAsDone = itemView.findViewById(R.id.mark_as_done);
            Remove = itemView.findViewById(R.id.remove_btn);
        }

I tried to access the component with:

 Button Remove = viewHolder.itemView.findViewById(R.id.remove_btn);

I wanna know how to reference or get the adapter class initialized components eg text view, button, etc. And use it on subroutine.class wherein the adapter is initialized and item touch helper is implemented.

0

There are 0 best solutions below