public class LiteratureAdapter extends RecyclerView.Adapter {
private List<Literature> mLiteratureList;
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView;
switch (viewType) {
case Literature.TYPE_BOOK:
itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.your_layout, parent, false);
return new BookViewHolder(itemView);
case Literature.TYPE_MAGAZINE:
itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.your_layout, parent, false);
return new MagazineViewHolder(itemView);
default: // TYPE_NEWSPAPER
itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.your_layout, parent, false);
return new NewspaperViewHolder(itemView);
}
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
switch (getItemViewType(position)) {
case Literature.TYPE_BOOK:
((BookViewHolder) holder).bindView(position);
break;
case Literature.TYPE_MAGAZINE:
((MagazineViewHolder) holder).bindView(position);
break;
case Literature.TYPE_NEWSPAPER:
((NewspaperViewHolder) holder).bindView(position);
break;
}
}
@Override
public int getItemCount() {
if (mLiteratureList == null) {
return 0;
} else {
return mLiteratureList.size();
}
}
@Override
public int getItemViewType(int position) {
return mLiteratureList.get(position).getType();
}
public void setLiteratureList(List<? extends Literature> literatureList) {
if (mLiteratureList == null){
mLiteratureList = new ArrayList<>();
}
mLiteratureList.clear();
mLiteratureList.addAll(literatureList);
notifyDataSetChanged();
}
class BookViewHolder extends RecyclerView.ViewHolder {
public BookViewHolder(View itemView) {
super(itemView);
// get reference to views
// itemView.findViewById...
}
void bindView(int position) {
Book book = (Book) mLiteratureList.get(position);
// bind data to the views
// textView.setText()...
}
}
class MagazineViewHolder extends RecyclerView.ViewHolder {
public MagazineViewHolder(View itemView) {
super(itemView);
// get reference to views
}
void bindView(int position) {
Magazine magazine = (Magazine) mLiteratureList.get(position);
// bind data to the views
}
}
class NewspaperViewHolder extends RecyclerView.ViewHolder {
public NewspaperViewHolder(View itemView) {
super(itemView);
// get reference to views
}
void bindView(int position) {
Newspaper newspaper = (Newspaper) mLiteratureList.get(position);
// bind data to the views
}
}
}
Thursday, September 19, 2019
Recycler view different view type- android studio
Labels:
android,
recyclerview