Guest User

Untitled

a guest
Sep 1st, 2020
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.40 KB | None | 0 0
  1. public void onAccordionClicked(int position) {
  2. List<ContactListModel> currentItems = _itemsLiveData.getValue();
  3. if (currentItems == null || currentItems.isEmpty() || position < 0 || position > currentItems.size()) return;
  4. ContactListModel selectedItem = currentItems.get(position);
  5. if (selectedItem instanceof RegionListItem) {
  6. if (((RegionListItem) selectedItem).isOpened()) {
  7. _itemsLiveData.postValue(removeChild(currentItems, ((RegionListItem) selectedItem), position));
  8. _itemsRangeInsertLiveData.postValue(new Pair<>(position + 1, ((RegionListItem) selectedItem).getContactListModels().size()));
  9. } else {
  10. _itemsLiveData.postValue(addChild(currentItems, ((RegionListItem) selectedItem), position));
  11. _itemsRemovedInsertLiveData.postValue(new Pair<>(position + 1, ((RegionListItem) selectedItem).getContactListModels().size()));
  12. }
  13. _itemForUpdateLiveData.postValue(position);
  14. }
  15. }
  16.  
  17. private List<ContactListModel> removeChild(List<ContactListModel> items, RegionListItem item, int position) {
  18. for (int i = 1; i <= item.getContactListModels().size(); i++) {
  19. items.remove(position + 1);
  20. }
  21. items.set(position, new RegionListItem(item, false));
  22. return items;
  23. }
  24.  
  25. private List<ContactListModel> addChild(List<ContactListModel> items, RegionListItem item, int position) {
  26. for (int i = 1; i <= item.getContactListModels().size(); i++) {
  27. items.add(position + i, item.getContactListModels().get(i - 1));
  28. }
  29. items.set(position, new RegionListItem(item, true));
  30. return items;
  31. }
  32.  
  33.  
  34. // Fragment
  35. contactsController.itemsLiveData.observe(getViewLifecycleOwner(), contactListModels -> {
  36. adapter.submitList(contactListModels);
  37. });
  38.  
  39. contactsController.itemForUpdateLiveData.observe(getViewLifecycleOwner(), position -> {
  40. adapter.notifyItemChanged(position);
  41. });
  42.  
  43. contactsController.itemsRangeInsertLiveData.observe(getViewLifecycleOwner(), pair -> {
  44. adapter.notifyItemRangeInserted(pair.first, pair.second);
  45. });
  46.  
  47. contactsController.itemsRemovedInsertLiveData.observe(getViewLifecycleOwner(), pair -> {
  48. adapter.notifyItemRangeRemoved(pair.first, pair.second);
  49. });
  50.  
Advertisement
Add Comment
Please, Sign In to add comment