Recycler view метод подхода OnItemDismiss - PullRequest
0 голосов
/ 22 октября 2018

У меня есть список элементов, отображаемых на экране, которые хранятся в ArrayList 'mSiteItems'.Я использую представление Recycler для моего дисплея.

Я хотел бы заявить, что мой подход корректен при работе с операцией удаления таким образом.Каждый раз, когда элемент выполняется, я удаляю его из массива и сохраняю его> Показать Snackbar в течение 2 секунд и запускаю поток, который ждет 2 секунды и

a) Удалите значение навсегда, внесите изменения в БД и т. Д. B) Процесс удаления продолжается без ожидания в течение 2 секунд, если обнаружен ДРУГОЙ размах для удаления следующего элемента.

override fun onItemDismiss(position: Int) {
        proceed = true
        val removedSiteItem = mSiteItemsData.removeAt(position)
        val snackbar = Snackbar.make(viewBaseView, "Entry Deleted", Snackbar.LENGTH_LONG)
        snackbar.setActionTextColor(Color.argb(255,255,85,0))
        snackbar.setAction("Undo", { v -> undoDelete(position, removedSiteItem) })
        snackbar.setDuration(2000)
        snackbar.show()

        Thread(object : Runnable{
            override fun run() {
                val copy = removedSiteItem
                var deletedinThread = false

                for ( count in 0 until 2000) {
                    Thread.sleep(1)
                    if (!(copy.equals(removedSiteItem))) {
                        eliminateSiteItemOnceAndForAll(copy)
                        deletedinThread = true
                        break
                    }
                }
                if (proceed && !deletedinThread){
                    eliminateSiteItemOnceAndForAll(copy)
                }
            }
        }).start()
        notifyItemRemoved(position)
}

private fun undoDelete(position: Int, value:SiteItems) {
            proceed = false
            mSiteItemsData.add(position, value)
            notifyItemInserted(position)
}
...