From 8df24dc1c47949018e9fdf682af23c7db073385f Mon Sep 17 00:00:00 2001 From: Kacper Ziubryniewicz Date: Sun, 1 Dec 2019 20:25:28 +0100 Subject: [PATCH] [Dialog/Events] Create adapter outside of the observer. --- .../ui/dialogs/event/EventListAdapter.kt | 3 ++- .../edziennik/ui/dialogs/event/EventListDialog.kt | 15 ++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/event/EventListAdapter.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/event/EventListAdapter.kt index 11752ec3..a9525c08 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/event/EventListAdapter.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/event/EventListAdapter.kt @@ -23,12 +23,13 @@ import pl.szczodrzynski.edziennik.utils.models.Date class EventListAdapter( val context: Context, - val eventList: List, val parentDialog: EventListDialog ) : RecyclerView.Adapter() { private val app by lazy { context.applicationContext as App } + val eventList = mutableListOf() + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val inflater = LayoutInflater.from(parent.context) val view: RowDialogEventListItemBinding = DataBindingUtil.inflate(inflater, R.layout.row_dialog_event_list_item, parent, false) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/event/EventListDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/event/EventListDialog.kt index 548cf7d4..4edfd598 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/event/EventListDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/event/EventListDialog.kt @@ -43,6 +43,7 @@ class EventListDialog( private val app by lazy { activity.application as App } private lateinit var b: DialogEventListBinding private lateinit var dialog: AlertDialog + private lateinit var adapter: EventListAdapter private var lesson: LessonFull? = null @@ -111,16 +112,24 @@ class EventListDialog( b.eventListView.apply { setHasFixedSize(false) isNestedScrollingEnabled = true - layoutManager = LinearLayoutManager(context) + layoutManager = LinearLayoutManager(activity) } + adapter = EventListAdapter(activity, this@EventListDialog) + b.eventListView.adapter = adapter + app.db.eventDao().getAllByDateTime(profileId, date, time).observe(activity, Observer { events -> if (events.isNullOrEmpty()) { b.eventListView.visibility = View.GONE b.textNoEvents.visibility = View.VISIBLE } else { - val adapter = EventListAdapter(activity, events, this) - b.eventListView.adapter = adapter + adapter.run { + eventList.apply { + clear() + addAll(events) + } + notifyDataSetChanged() + } } }) }