Created
October 16, 2017 17:44
-
-
Save nutchy/ed9d3a8fa200f2a50889c1123809c947 to your computer and use it in GitHub Desktop.
[MyLazyInstagram] - LazyInstagramAdapter
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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