From 4b7185a74b5e116fa378a2826fbff1e6aaf25df0 Mon Sep 17 00:00:00 2001 From: tibbi <tibor@kaputa.sk> Date: Fri, 16 Nov 2018 17:14:04 +0100 Subject: [PATCH] fix some glitches related to selecting events at the list view --- .../calendar/pro/adapters/EventListAdapter.kt | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/adapters/EventListAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/adapters/EventListAdapter.kt index cb11f2f62..27f34ce9d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/adapters/EventListAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/adapters/EventListAdapter.kt @@ -70,9 +70,9 @@ class EventListAdapter(activity: SimpleActivity, var listItems: ArrayList<ListIt override fun getIsItemSelectable(position: Int) = listItems[position] is ListEvent - override fun getItemSelectionKey(position: Int) = (listItems.getOrNull(position) as? ListEvent)?.id?.toInt() + override fun getItemSelectionKey(position: Int) = (listItems.getOrNull(position) as? ListEvent)?.hashCode() - override fun getItemKeyPosition(key: Int) = listItems.indexOfFirst { (it as? ListEvent)?.id?.toInt() == key } + override fun getItemKeyPosition(key: Int) = listItems.indexOfFirst { (it as? ListEvent)?.hashCode() == key } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyRecyclerViewAdapter.ViewHolder { val layoutId = when (viewType) { @@ -136,7 +136,7 @@ class EventListAdapter(activity: SimpleActivity, var listItems: ArrayList<ListIt private fun setupListEvent(view: View, listEvent: ListEvent) { view.apply { - event_item_frame.isSelected = selectedKeys.contains(listEvent.id.toInt()) + event_item_frame.isSelected = selectedKeys.contains(listEvent.hashCode()) event_item_title.text = listEvent.title event_item_description?.text = if (replaceDescription) listEvent.location else listEvent.description event_item_start.text = if (listEvent.isAllDay) allDayString else Formatter.getTimeFromTS(context, listEvent.startTS) @@ -195,11 +195,13 @@ class EventListAdapter(activity: SimpleActivity, var listItems: ArrayList<ListIt } } - private fun shareEvents() = activity.shareEvents(selectedKeys.distinct().map { it.toLong() }) + private fun shareEvents() = activity.shareEvents(getSelectedEventIds()) + + private fun getSelectedEventIds() = listItems.filter { it is ListEvent && selectedKeys.contains(it.hashCode()) }.map { (it as ListEvent).id }.toMutableList() as ArrayList<Long> private fun askConfirmDelete() { - val eventIds = selectedKeys.toMutableList().map { it.toLong() } - val eventsToDelete = listItems.filter { selectedKeys.contains((it as? ListEvent)?.id?.toInt()) } as List<ListEvent> + val eventIds = getSelectedEventIds() + val eventsToDelete = listItems.filter { selectedKeys.contains((it as? ListEvent)?.hashCode()) } as List<ListEvent> val timestamps = eventsToDelete.mapNotNull { (it as? ListEvent)?.startTS } val hasRepeatableEvent = eventsToDelete.any { it.isRepeatable }