I'm created a Recycler View Adapter and I want to know how can I use same adapter with multiple layouts ? first layout is an expandable Card view and I want to use this adapter in another activity with another layout do I need to create another adapter or there is any way to use this adapter again ? this is my Adapter code :
public class BookRecyclerViewAdapter extends RecyclerView.Adapter<BookRecyclerViewAdapter.viewHolder> { private ArrayList<Book> books = new ArrayList<>(); private Context context; public BookRecyclerViewAdapter(Context context) { this.context = context; } @NonNull @Override public viewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_book, parent, false); return new viewHolder(view); } @Override public void onBindViewHolder(@NonNull viewHolder holder, int position) { holder.txtName.setText(books.get(position).getName()); holder.txtAuthor.setText(books.get(position).getAuthor()); holder.txtDesc.setText(books.get(position).getShortDesc()); Glide.with(context) .asBitmap() .load(books.get(position).getImgUrl()) .into(holder.imgBook); holder.parent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(context, BookActivity.class); intent.putExtra(BOOK_ID_KEY, books.get(position).getId()); context.startActivity(intent); } }); if (books.get(position).isExpanded()) { TransitionManager.beginDelayedTransition(holder.parent); holder.expanded.setVisibility(View.VISIBLE); holder.downArrow.setVisibility(View.GONE); } else { TransitionManager.beginDelayedTransition(holder.parent); holder.expanded.setVisibility(View.GONE); holder.downArrow.setVisibility(View.VISIBLE); } } @Override public int getItemCount() { return books.size(); } public void setBooks(ArrayList<Book> books) { this.books = books; notifyDataSetChanged(); } public class viewHolder extends RecyclerView.ViewHolder { private CardView parent; private ImageView imgBook; private TextView txtName; private ImageView downArrow, upArrow; private RelativeLayout expanded, collapsed; private TextView txtAuthor, txtDesc; public viewHolder(@NonNull View itemView) { super(itemView); parent = itemView.findViewById(R.id.parent); imgBook = itemView.findViewById(R.id.imgBook); txtName = itemView.findViewById(R.id.txtBookName); downArrow = itemView.findViewById(R.id.btnDownArrow); upArrow = itemView.findViewById(R.id.btnUpArrow); expanded = itemView.findViewById(R.id.expandedRellayout); collapsed = itemView.findViewById(R.id.collapsedRelLayout); txtAuthor = itemView.findViewById(R.id.txtAuthor); txtDesc = itemView.findViewById(R.id.txtShortDesc); downArrow.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Book book = books.get(getAdapterPosition()); book.setExpanded(!book.isExpanded()); notifyItemChanged(getAdapterPosition()); } }); upArrow.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Book book = books.get(getAdapterPosition()); book.setExpanded(!book.isExpanded()); notifyItemChanged(getAdapterPosition()); } }); } } }