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.