Skip to content

Instantly share code, notes, and snippets.

@nutchy
Created October 16, 2017 17:23
Show Gist options
  • Select an option

  • Save nutchy/99d4d53a518dae38cacd2d12f2cc1bcd to your computer and use it in GitHub Desktop.

Select an option

Save nutchy/99d4d53a518dae38cacd2d12f2cc1bcd to your computer and use it in GitHub Desktop.
[MyLazyInstagram] - MainActivity.java - 2
public class LazyInstagramAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context context;
private List<Layout> layouts;
private UserProfile userProfile;
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(context);
switch (viewType){
case Layout.TYPE_USER_DETAIL:
View vUserDetail = inflater.inflate(R.layout.rc_user_detail, parent, false);
return new UserDetailViewHolder(vUserDetail);
case Layout.TYPE_POST_ITEM:
View vPost = inflater.inflate(R.layout.rc_post_item, parent, false);
return new PostsViewHolder(vPost);
}
return null;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder.getItemViewType() == Layout.TYPE_USER_DETAIL){
viewUserDetail ((UserDetailViewHolder) holder);
} else if (holder.getItemViewType() == Layout.TYPE_POST_ITEM){
viewPosts((PostsViewHolder) holder);
}
}
private void viewUserDetail(UserDetailViewHolder holder){
UserDetailAdapter userDetailAdapter = new UserDetailAdapter(context, userProfile);
holder.recyclerView.setLayoutManager(new LinearLayoutManager(context));
holder.recyclerView.setAdapter(userDetailAdapter);
}
private void viewPosts(PostsViewHolder holder){
PostAdapter postAdapter = new PostAdapter(context, userProfile.getPosts());
holder.recyclerView.setLayoutManager(new GridLayoutManager(context, 3));
holder.recyclerView.setAdapter(postAdapter);
}
@Override
public int getItemCount() {
return layouts.size();
}
@Override
public int getItemViewType(int position) {
return layouts.get(position).getType();
}
public class PostsViewHolder extends RecyclerView.ViewHolder {
RecyclerView recyclerView;
// ..
}
public class UserDetailViewHolder extends RecyclerView.ViewHolder {
RecyclerView recyclerView;
// ..
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment