Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void onAccordionClicked(int position) {
- List<ContactListModel> currentItems = _itemsLiveData.getValue();
- if (currentItems == null || currentItems.isEmpty() || position < 0 || position > currentItems.size()) return;
- ContactListModel selectedItem = currentItems.get(position);
- if (selectedItem instanceof RegionListItem) {
- if (((RegionListItem) selectedItem).isOpened()) {
- _itemsLiveData.postValue(removeChild(currentItems, ((RegionListItem) selectedItem), position));
- _itemsRangeInsertLiveData.postValue(new Pair<>(position + 1, ((RegionListItem) selectedItem).getContactListModels().size()));
- } else {
- _itemsLiveData.postValue(addChild(currentItems, ((RegionListItem) selectedItem), position));
- _itemsRemovedInsertLiveData.postValue(new Pair<>(position + 1, ((RegionListItem) selectedItem).getContactListModels().size()));
- }
- _itemForUpdateLiveData.postValue(position);
- }
- }
- private List<ContactListModel> removeChild(List<ContactListModel> items, RegionListItem item, int position) {
- for (int i = 1; i <= item.getContactListModels().size(); i++) {
- items.remove(position + 1);
- }
- items.set(position, new RegionListItem(item, false));
- return items;
- }
- private List<ContactListModel> addChild(List<ContactListModel> items, RegionListItem item, int position) {
- for (int i = 1; i <= item.getContactListModels().size(); i++) {
- items.add(position + i, item.getContactListModels().get(i - 1));
- }
- items.set(position, new RegionListItem(item, true));
- return items;
- }
- // Fragment
- contactsController.itemsLiveData.observe(getViewLifecycleOwner(), contactListModels -> {
- adapter.submitList(contactListModels);
- });
- contactsController.itemForUpdateLiveData.observe(getViewLifecycleOwner(), position -> {
- adapter.notifyItemChanged(position);
- });
- contactsController.itemsRangeInsertLiveData.observe(getViewLifecycleOwner(), pair -> {
- adapter.notifyItemRangeInserted(pair.first, pair.second);
- });
- contactsController.itemsRemovedInsertLiveData.observe(getViewLifecycleOwner(), pair -> {
- adapter.notifyItemRangeRemoved(pair.first, pair.second);
- });
Advertisement
Add Comment
Please, Sign In to add comment