Как связать recycleview с asyncTask?

Нужно чтобы карточки людей выводились через какое-то время с помощью Async Есть PersonHolder:

    val personsList = mutableListOf<Person>()
    private val namePerson = arrayOf(
        "Хаяо Миядзаки",
        "Норман Ридус",
        "Билли Джо",
        "Оливер Сайкс",
        "Маргарет Тэтчер",
        "Генри Форд",
        "Фредди Меркьюри",
        "Фил Найт",
        "Леонардо ди Каприо",
        "Lana Del Rey"
    )
    private val sexPerson = arrayOf(
        "мужчина",
        "мужчина",
        "мужчина",
        "мужчина",
        "женщина",
        "мужчина",
        "мужчина",
        "мужчина",
        "мужчина",
        "женщина"
    )
    private val datePerson = arrayOf(
        "1941 - н.в.",
        "1969 - н.в.",
        "1972 - н.в.",
        "1986 - н.в.",
        "1925 - 2013",
        "1863 - 1947",
        "1946 - 1991",
        "1938 - н.в.",
        "1974 - н.в.",
        "1985 - н.в.",
    )

    private val infoPerson = arrayOf(
        "Всемирно знаменитый японский аниматор, режиссер и сценарист. Обладатель «Оскарa» за фильм («Унесенные призраками»). ",
        "Американский актёр и фотомодель, известный по своим ролям в сериале «Ходячие мертвецы», игре Death Stranding.",
        "Американский музыкант, певец, автор песен и актёр, наиболее известный как лид-вокалист и гитарист панк-рок группы Green Day. ",
        "Музыкант, лид-вокалист рок-группы Bring Me the Horizon. Также он создал фирму одежды Drop Dead Clothing. ",
        "Премьер-министр Великобритании в 1979-1990 годах, лидер Консервативной партии в 1975-1990 годах, баронесса с 1992 года.",
        "Американский промышленник, владелец заводов по производству автомобилей по всему миру, изобретатель. ",
        "Британский певец парсийского происхождения, автор песен и вокалист рок-группы Queen. Меркьюри в детстве филателистом.",
        "Американский бизнесмен, один из основателей компании Nike. Выпускник Орегонского университета и Стэнфордской школы бизнеса.",
        "Американский актёр и продюсер. Лауреат премии «Оскар», трёхкратный лауреат премии «Золотой глобус», «Серебряного медведя».",
        "Американская певица, автор песен и поэтесса. Её музыка была отмечена критиками за кинематографический стиль, меланхолией."
    )

    private val photo = arrayOf(
        R.drawable.miadzaki,
        R.drawable.norman,
        R.drawable.billi,
        R.drawable.oliver,
        R.drawable.tet,
        R.drawable.ford,
        R.drawable.freddi,
        R.drawable.fil,
        R.drawable.leonardo,
        R.drawable.lana
    )


    fun createCollectionPerson(): ArrayList<Person>{
        val persons: ArrayList<Person> = ArrayList<Person>()
        for (i in 0..9){
            val person = Person(
                namePerson[i],
                sexPerson[i],
                datePerson[i],
                infoPerson[i],
                photo[i]
            )
            persons.add(person)
        }
        return persons
    }


}

data class Person(
    val name: String,
    val sex: String,
    val date: String,
    val info: String,
    @DrawableRes val photoPerson: Int
)


И  есть  AsyncFragment : 
class AsyncFragment : Fragment(), TaskCallbacks {


    private var myAsync: MyAsyncTask? = null
    private var handler: Handler? = null
    private var callbacks: TaskCallbacks? = null
    private lateinit var binding: AsyncFragmentBinding

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
    ): View {
        binding = AsyncFragmentBinding.inflate(inflater, container, false)
        return binding.root
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        retainInstance = true
        callbacks = this
        startTask()
    }

    private val verticalLinearLayoutManager: LinearLayoutManager =
        LinearLayoutManager(activity, RecyclerView.VERTICAL, false)

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        setupRecycleView()
    }
    private fun setupRecycleView(){
        binding.cardPerson.layoutManager = verticalLinearLayoutManager
        binding.cardPerson.adapter = PersonAdapter(PersonHolder.createCollectionPerson(), ::showSnackbar, ::showSnackbarLike)

    }
    private fun showSnackbar(person: Person): Unit{
        Snackbar.make(binding.root, "Нажата карточка: " + person.name, 3000).show()
    }
    private  fun showSnackbarLike(person: Person): Unit{
        Snackbar.make(binding.root, "Нажат лайк:  " + person.name, 3000).show()
    }

    @SuppressLint("StaticFieldLeak")
    inner class MyAsyncTask : AsyncTask<Unit, Int, Unit>() {
        override fun onPreExecute() {
            callbacks?.onPreExecuted()
        }

        override fun doInBackground(vararg params: Unit?) {
            Log.d("Started", "I'm Started")
            for (i in 1..PersonHolder.personsList.count()) {
                TimeUnit.SECONDS.sleep(1)
                isCancelled && break
            }
        }

        override fun onPostExecute(result: Unit?) {
            callbacks?.let {
                for (i in 1..100) {
                    handler?.sendEmptyMessageDelayed(
                        i,
                        ((i - 1) * 2000).toLong()
                    )
                }
            }
        }
    }

    private fun startTask() {
        myAsync = MyAsyncTask()

    }

    override fun onPreExecuted() {
        Log.d("cancel", "executed")
    }

    override fun onCancelled() {
        Log.d("cancel", "cancel")
    }

    @SuppressLint("NotifyDataSetChanged")
    override fun onPostExecute() {
        TODO("Not yet implemented")
    }

    companion object {
        const val MyTag = "FRAGMENT_ASYNC"
    }
}
Как это сделать? 

Ответы (0 шт):