Skip to content

Instantly share code, notes, and snippets.

@nutchy
Created October 16, 2017 17:44
Show Gist options
  • Save nutchy/ed9d3a8fa200f2a50889c1123809c947 to your computer and use it in GitHub Desktop.
Save nutchy/ed9d3a8fa200f2a50889c1123809c947 to your computer and use it in GitHub Desktop.
[MyLazyInstagram] - LazyInstagramAdapter
public class LazyInstagramAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context context;
private List<Layout> layouts;
private UserProfile userProfile;
private Boolean isGrid = true;
public ImageButton gridBtn, listBtn;
public LazyInstagramAdapter(Context context, List<Layout> layouts) {
this.context = context;
this.layouts = layouts;
}
public void setUserProfile(UserProfile userProfile) {
this.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);
final PostsViewHolder postsViewHolder = new PostsViewHolder(vPost);
gridBtn = (ImageButton) vPost.findViewById(R.id.gridBtn);
listBtn = (ImageButton) vPost.findViewById(R.id.listBtn);
gridBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isGrid = true;
postsViewHolder.recyclerView
.setLayoutManager(new GridLayoutManager(context, 3));
}
});
listBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isGrid = false;
postsViewHolder.recyclerView
.setLayoutManager(new LinearLayoutManager(context));
}
});
return postsViewHolder;
}
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());
if (isGrid) {
holder.recyclerView.setLayoutManager(new GridLayoutManager(context, 3));
} else {
holder.recyclerView.setLayoutManager(new LinearLayoutManager(context));
}
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 PostsViewHolder(View itemView) {
super(itemView);
recyclerView = (RecyclerView) itemView.findViewById(R.id.rc_post);
}
public RecyclerView getRecyclerView() {
return recyclerView;
}
}
public class UserDetailViewHolder extends RecyclerView.ViewHolder {
RecyclerView recyclerView;
public UserDetailViewHolder(View itemView) {
super(itemView);
recyclerView = (RecyclerView) itemView.findViewById(R.id.rc_user);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment