Adi099

Untitled

Nov 17th, 2016
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.20 KB | None | 0 0
  1.  
  2.  
  3. /**
  4. * Created by anandbose on 09/06/15.
  5. */
  6. public class ExpandableListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
  7. public static final int HEADER = 0;
  8. public static final int CHILD = 1;
  9.  
  10. private List<Item> data;
  11.  
  12. public ExpandableListAdapter(List<Item> data) {
  13. this.data = data;
  14. }
  15.  
  16. @Override
  17. public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int type) {
  18. View view = null;
  19. Context context = parent.getContext();
  20. float dp = context.getResources().getDisplayMetrics().density;
  21. int subItemPaddingLeft = (int) (18 * dp);
  22. int subItemPaddingTopAndBottom = (int) (5 * dp);
  23. LayoutInflater inflater = (LayoutInflater) parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  24. switch (type) {
  25. case HEADER:
  26.  
  27. view = inflater.inflate(R.layout.list_header, parent, false);
  28. ListHeaderViewHolder header = new ListHeaderViewHolder(view);
  29. return header;
  30. case CHILD:
  31. view = inflater.inflate(R.layout.listchild, parent, false);
  32. ListChildViewHolder child = new ListChildViewHolder(view);
  33. return child;
  34. }
  35. return null;
  36. }
  37.  
  38. public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
  39. final Item item = data.get(position);
  40. switch (item.type) {
  41. case HEADER:
  42. final ListHeaderViewHolder itemController = (ListHeaderViewHolder) holder;
  43. itemController.refferalItem = item;
  44. itemController.header_title.setText(item.text);
  45. if (item.invisibleChildren == null) {
  46. itemController.btn_expand_toggle.setImageResource(R.drawable.circle_minus);
  47. } else {
  48. itemController.btn_expand_toggle.setImageResource(R.drawable.circle_plus);
  49. }
  50. itemController.btn_expand_toggle.setOnClickListener(new View.OnClickListener() {
  51. @Override
  52. public void onClick(View v) {
  53. if (item.invisibleChildren == null) {
  54. item.invisibleChildren = new ArrayList<Item>();
  55. int count = 0;
  56. int pos = data.indexOf(itemController.refferalItem);
  57. while (data.size() > pos + 1 && data.get(pos + 1).type == CHILD) {
  58. item.invisibleChildren.add(data.remove(pos + 1));
  59. count++;
  60. }
  61. notifyItemRangeRemoved(pos + 1, count);
  62. itemController.btn_expand_toggle.setImageResource(R.drawable.circle_plus);
  63. } else {
  64. int pos = data.indexOf(itemController.refferalItem);
  65. int index = pos + 1;
  66. for (Item i : item.invisibleChildren) {
  67. data.add(index, i);
  68. index++;
  69. }
  70. notifyItemRangeInserted(pos + 1, index - pos - 1);
  71. itemController.btn_expand_toggle.setImageResource(R.drawable.circle_minus);
  72. item.invisibleChildren = null;
  73. }
  74. }
  75. });
  76. break;
  77. case CHILD:
  78. final ListChildViewHolder itemController1 = (ListChildViewHolder) holder;
  79. itemController1.refferalItem = item;
  80. itemController1.header_title1.setText(item.text);
  81. break;
  82. }
  83. }
  84.  
  85. @Override
  86. public int getItemViewType(int position) {
  87. return data.get(position).type;
  88. }
  89.  
  90. @Override
  91. public int getItemCount() {
  92. return data.size();
  93. }
  94.  
  95. private static class ListHeaderViewHolder extends RecyclerView.ViewHolder {
  96. public TextView header_title;
  97. public ImageView btn_expand_toggle;
  98. public Item refferalItem;
  99.  
  100. public ListHeaderViewHolder(View itemView) {
  101. super(itemView);
  102. header_title = (TextView) itemView.findViewById(R.id.header_title);
  103. btn_expand_toggle = (ImageView) itemView.findViewById(R.id.btn_expand_toggle);
  104. }
  105. }
  106. private static class ListChildViewHolder extends RecyclerView.ViewHolder {
  107. public TextView header_title1;
  108. public ImageView btn_expand_toggle1;
  109. public Item refferalItem;
  110.  
  111. public ListChildViewHolder(View itemView) {
  112. super(itemView);
  113. header_title1 = (TextView) itemView.findViewById(R.id.header_title1);
  114. btn_expand_toggle1 = (ImageView) itemView.findViewById(R.id.btn_expand_toggle1);
  115. }
  116. }
  117. public static class Item {
  118. public int type;
  119. public String text;
  120. public List<Item> invisibleChildren;
  121.  
  122. public Item() {
  123. }
  124.  
  125. public Item(int type, String text) {
  126. this.type = type;
  127. this.text = text;
  128. }
  129. }
  130. }
Add Comment
Please, Sign In to add comment