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());
}
});
}
}
}