Skip to content

Instantly share code, notes, and snippets.

@donrokzon
Created October 26, 2018 09:36
Show Gist options
  • Save donrokzon/832860c49940190b2296e2be65060fb0 to your computer and use it in GitHub Desktop.
Save donrokzon/832860c49940190b2296e2be65060fb0 to your computer and use it in GitHub Desktop.
MultiView Recyclerview
public class ProfileAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final Context context;
private List<Data> profileList;
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView textViewFirstName;
ImageView imageView;
public MyViewHolder(View view) {
super(view);
textViewFirstName = view.findViewById(R.id.textView);
imageView = view.findViewById(R.id.imageView);
}
}
public class MyViewHolder2 extends RecyclerView.ViewHolder {
public MyViewHolder2(View view) {
super(view);
}
}
public ProfileAdapter(List<Data> moviesList, Context context) {
this.profileList = moviesList;
this.context = context;
}
@Override
public int getItemViewType(int position) {
switch (profileList.get(position).getId()) {
case 4:
return 2;
default:
return 0;
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.profile_list_row, parent, false);
View itemView2 = LayoutInflater.from(parent.getContext())
.inflate(R.layout.test_row, parent, false);
switch (viewType) {
case 0:
return new MyViewHolder(itemView);
case 2:
return new MyViewHolder2(itemView2);
}
return null;
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
switch (holder.getItemViewType()) {
case 0:
final MyViewHolder myViewHolder = (MyViewHolder) holder;
Data profile = profileList.get(position);
myViewHolder.textViewFirstName.setText(profile.getFirstName());
Picasso.get().load(profile.getAvatar()).into(myViewHolder.imageView);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Pair<View, String> pair1 = Pair.create((View) myViewHolder.imageView, "IMAGE");
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(((MainActivity) context), pair1);
context.startActivity(new Intent(context, ProfileDetailActivity.class), options.toBundle());
}
});
break;
case 2:
final MyViewHolder2 myViewHolder2 = (MyViewHolder2) holder;
break;
}
}
@Override
public int getItemCount() {
return profileList.size();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment