Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.34 KB | None | 0 0
  1. public class PostRecyclerAdapter extends RecyclerView.Adapter<BaseViewHolder> {
  2.  
  3. private static final int VIEW_TYPE_LOADING = 0;
  4. private static final int VIEW_TYPE_NORMAL = 1;
  5.  
  6. private boolean isLoaderVisible = false;
  7.  
  8. private List<PostItem> mPostItems;
  9.  
  10. public PostRecyclerAdapter(List<PostItem> postItems) {
  11. this.mPostItems = postItems;
  12. }
  13.  
  14. @NonNull
  15. @Override
  16. public BaseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
  17. switch (viewType) {
  18. case VIEW_TYPE_NORMAL:
  19. return new PostViewHolder(
  20. LayoutInflater.from(parent.getContext()).inflate(R.layout.item_post, parent, false));
  21. case VIEW_TYPE_LOADING:
  22. return new FooterHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_loading, parent, false));
  23. default:
  24. return null;
  25. }
  26. }
  27.  
  28. @Override
  29. public void onBindViewHolder(@NonNull BaseViewHolder holder, int position) {
  30. holder.onBind(position);
  31. }
  32.  
  33. @Override
  34. public int getItemViewType(int position) {
  35. if (isLoaderVisible) {
  36. return position == mPostItems.size() -1 ? VIEW_TYPE_LOADING : VIEW_TYPE_NORMAL;
  37. } else {
  38. return VIEW_TYPE_NORMAL;
  39. }
  40. }
  41.  
  42. @Override
  43. public int getItemCount() {
  44. return mPostItems == null ? 0 : mPostItems.size();
  45. }
  46.  
  47. public void add(PostItem response) {
  48. mPostItems.add(response);
  49. notifyItemInserted(mPostItems.size() -1);
  50. }
  51.  
  52. public void addAll(List<PostItem> postItems) {
  53. for (PostItem response : postItems) {
  54. add(response);
  55. }
  56. }
  57.  
  58. private void remove(PostItem postItems) {
  59. int position = mPostItems.indexOf(postItems);
  60.  
  61. if (position > -1) {
  62. mPostItems.remove(position);
  63. notifyItemRemoved(position);
  64. }
  65. }
  66.  
  67. public void addLoading() {
  68. isLoaderVisible = true;
  69. add(new PostItem());
  70. }
  71.  
  72. public void removeLoading() {
  73. isLoaderVisible = false;
  74. int position = mPostItems.size() -1;
  75. PostItem item = getItem(position);
  76.  
  77. if (item != null) {
  78. mPostItems.remove(position);
  79. notifyItemRemoved(position);
  80. }
  81. }
  82.  
  83. public void clear() {
  84. while (getItemCount() > 0) {
  85. remove(getItem(0));
  86. }
  87. }
  88.  
  89. PostItem getItem(int position) {
  90. return mPostItems.get(position);
  91. }
  92. public class PostViewHolder extends BaseViewHolder {
  93.  
  94. @BindView(R.id.tvTitle)
  95. TextView tvTitle;
  96.  
  97. @BindView(R.id.tvDesc)
  98. TextView tvDesc;
  99.  
  100. PostViewHolder(View itemView) {
  101. super(itemView);
  102. ButterKnife.bind(this, itemView);
  103. }
  104.  
  105. protected void clear() {
  106.  
  107. }
  108.  
  109. public void onBind(int position) {
  110. super.onBind(position);
  111. PostItem item = mPostItems.get(position);
  112.  
  113. tvTitle.setText(item.getTitle());
  114. tvDesc.setText(item.getDesc());
  115. }
  116. }
  117.  
  118. public class FooterHolder extends BaseViewHolder {
  119.  
  120. @BindView(R.id.mProgress)
  121. ProgressBar mProgress;
  122.  
  123. FooterHolder(View itemView) {
  124. super(itemView);
  125. ButterKnife.bind(this, itemView);
  126. }
  127.  
  128. @Override
  129. protected void clear() {
  130.  
  131. }
  132. }
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement