I am new to android development. So sorry if this is useless question. I have RecyclerView
like I want to display image and video from Firebase
in RecyclerView
.
I have two ViewHolder
. What I want is, adapter to check the post "type". If the
1)"type"=photo
. I want to inflate PhotoViewHolder
.
2) If "type"= video I want to inflate VideoHolder
.
How can I do this?. Please help me!.
I have googled for hours and I got this code it only inflate VideoHolder
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
//findViewById...
mContext = parent.getContext();
switch (viewType) {
case VIDEO_TYPE:
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.video_type, parent, false);
return new VideoHolder(v);
case IMAGE_TYPE:
View i = LayoutInflater.from(parent.getContext()).inflate(R.layout.main_list, parent, false);
return new PhotoHolder(i);
}
return null;
}
@Override
public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, final int position) {
mHolder = holder;
photo = moviesList.get(position);
// final VideoHolder viewHolder2 = (VideoHolder)holder;
int viewType = getItemViewType(position);
switch ( viewType ) {
case IMAGE_TYPE:
PhotoHolder photoview = (PhotoHolder) holder;
final ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.displayImage(getItem(position).getImage_path(),photoview.image);
break;
case VIDEO_TYPE:
final VideoHolder viewHolder2 = (VideoHolder)holder;
//viewHolder2.users = new StringBuilder();
viewHolder2.bind(Uri.parse(photo.getImage_path()),moviesList);
break;
}
}
@Override
public int getItemCount() {
return moviesList.size();
}
public Photo getItem(int position) {
return moviesList.get(position);
}
@Override
public int getItemViewType ( int position ) {
int viewType;
if if (moviesList.get(position).getType().equals("Photo")) {
viewType = IMAGE_TYPE;
} else{
viewType = VIDEO_TYPE;
}
return viewType;
}