Вопросы
списки в адаптере для правильного отображения данных. Каждый список относится к разным макетам, поэтому у нас разные TextViews
, ImageViews
и т. Д.
открытый класс FilesAdapter расширяет RecyclerView.Adapter {
public static final int VIDEO_FILES_ADAPTER = 1;
public static final int COMMENT_ADAPTER = 2;
public static final int QUESTIONS_ADAPTER = 3;
private int CURRENT_ADAPTER;
личный список видеофайлов;
личный список комментариев;
закрытый список вопросов;
логическое значение isForUser;
public FilesAdapter (int currentAdapter, Список видеофайлов, логическое значение isForUser) {
this.videoFiles = videoFiles;
this.CURRENT_ADAPTER = currentAdapter;
this.isForUser = isForUser;
}
public FilesAdapter (int currentAdapter, Список комментариев) {
this.comments = комментарии;
this.CURRENT_ADAPTER = currentAdapter;
}
public FilesAdapter (int currentAdapter, Список вопросов, int unusedVariable) {
this.questions = вопросы;
this.CURRENT_ADAPTER = currentAdapter;
}
@ ненулевым
@Override
public FilesViewHolder onCreateViewHolder (родительский элемент @NonNull ViewGroup, int viewType) {
Посмотреть представление;
FilesViewHolder viewHolder;
switch(CURRENT_ADAPTER){
case VIDEO_FILES_ADAPTER:
if(isForUser){
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.single_layout_file_user, parent, false);
}else{
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.single_layout_file_main, parent, false);
}
viewHolder = new FilesViewHolder(VIDEO_FILES_ADAPTER, view, isForUser);
return viewHolder;
case COMMENT_ADAPTER:
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.single_layout_comment, parent, false);
viewHolder = new FilesViewHolder(COMMENT_ADAPTER, view, false);
return viewHolder;
case QUESTIONS_ADAPTER:
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.single_layout_question, parent, false);
viewHolder = new FilesViewHolder(QUESTIONS_ADAPTER, view, false);
return viewHolder;
}
return null;
}
@ Override
public void onBindViewHolder (держатель @NonNull FilesViewHolder, позиция int) {
switch (CURRENT_ADAPTER){
case VIDEO_FILES_ADAPTER:
holder.videoTitle.setText(videoFiles.get(position).getFileName());
holder.videoDescription.setText(videoFiles.get(position).getFileDescription());
if(isForUser){
holder.videoDate.setText(videoFiles.get(position).getFileCreatedAt());
}else{
holder.videoUser.setText(videoFiles.get(position).getUsername());
}
holder.videoCount.setText(videoFiles.get(position).getWatched());
break;
case COMMENT_ADAPTER:
holder.commentComment.setText(comments.get(position).getComment());
holder.commentUsername.setText(comments.get(position).getUsername());
holder.commentCreatedAt.setText(comments.get(position).getCreatedAt());
break;
case QUESTIONS_ADAPTER:
holder.questionTitle.setText(questions.get(position).getProviderUsername());
break;
}
}
@ Override
public int getItemCount () {
switch (CURRENT_ADAPTER){
case VIDEO_FILES_ADAPTER:
return videoFiles.size();
case COMMENT_ADAPTER:
return comments.size();
case QUESTIONS_ADAPTER:
return questions.size();
}
return 0;
}
открытый статический класс FilesViewHolder расширяет RecyclerView.ViewHolder {
private static final int VIDEO_FILES_ADAPTER = 1;
private static final int COMMENT_ADAPTER = 2;
private static final int QUESTIONS_ADAPTER = 3;
private int CURRENT_ADAPTER;
// Related to audio file class
public TextView videoTitle, videoDescription, videoDate, videoUser, videoCount;
// Related to comment class
private TextView commentComment, commentUsername, commentCreatedAt;
// Related to subscription class
private TextView questionTitle;
// @param isForUser applies only if CURRENT_ADAPTER == VIDEO_FILES_ADAPTER
public FilesViewHolder(int CURRENT_ADAPTER, View itemView, boolean isForUser) {
super(itemView);
switch(CURRENT_ADAPTER){
case VIDEO_FILES_ADAPTER:
videoTitle = itemView.findViewById(R.id.tV_title);
videoDescription = itemView.findViewById(R.id.tV_description);
if(isForUser){
videoDate = itemView.findViewById(R.id.tV_date);
}else{
videoUser = itemView.findViewById(R.id.tV_username);
}
videoCount = itemView.findViewById(R.id.tV_watched);
break;
case COMMENT_ADAPTER:
commentComment = itemView.findViewById(R.id.tV_comment);
commentUsername = itemView.findViewById(R.id.tV_comment_username);
commentCreatedAt = itemView.findViewById(R.id.tV_comment_created_at);
break;
case QUESTIONS_ADAPTER:
questionTitle = itemView.findViewById(R.id.tV_question);
break;
}
}
}
}