'RecyclerView only displaying correct data when using breakpoints

I am trying to make my RecylerView display data from a database, however the recyclerView displays nothing, unless i walk through the code with breakpoints, in which case it displays as expected. In the EssayPlanDialogFragment i inisialised an empty arrayList to store the essay lists which then has essayParagrpahs added to it either if the dialogFragemnt is called from the previous essayFragment, in which case the fillIn() function is called to turn database data into paragraphs or if the add paragraph is pressed to add a new empty paragraph. The breakpoint that seem to make it work is on the var paragraphList = ArrayList() and triggers 8 times before displaying the data

RecyclerView Adapter

class EssayPlanAdapter(): RecyclerView.Adapter<EssayPlanAdapter.ViewHolder>() {

    var paragraphList = ArrayList<essayParagraph>()

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        var view = LayoutInflater.from(parent.context).inflate(R.layout.essay_paragraph_layout, parent, false)
        
        return ViewHolder(view)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        ///code

    }

    override fun getItemCount(): Int {
        return paragraphList.size
    }

    fun setData(paragraph: ArrayList<essayParagraph>) {
        this.paragraphList = paragraph
        notifyDataSetChanged()
    }

   //more code ViewHolder Class and code help with adding essayPlan to databse

   

}

EssayPlanDialogFragment

class essayPlayDialogFragment(questionId:Int,fromEssay:Int): DialogFragment() {
    var paragraphs = ArrayList<essayParagraph>()
    var fromEssay = fromEssay
    lateinit var introduction: LinearLayout
    lateinit var title:EditText
    var questionId = questionId



    override fun onCreateView(){
        //code
    }

    override fun onViewCreated(view: View, @Nullable savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        val adapter = EssayPlanAdapter()
        title =  view.findViewById(R.id.essayTitle)
        introduction = view.findViewById(R.id.introduction)
        val viewModle = ViewModelProvider(this).get(essayViewModle::class.java)
        val paragraphRecycler: RecyclerView = view.findViewById(R.id.essayPlanRecycler)
        val closeBtn: ImageButton = view.findViewById(R.id.closeButton)
        val finishBtn:ImageButton = view.findViewById(R.id.finnishButton)
        //if Dialog fragment opened from previousEssays prafment fromEssay == 1, if from makeNewEssayPragment == 0 
        if (fromEssay == 1){
            val essay = viewModle.checkId(questionId) //returns essay with aprriate essayId
            paragraphRecycler.adapter = adapter
            paragraphRecycler.layoutManager = LinearLayoutManager(requireContext())
            var tempEssays = fillIn(essay,introduction)
            adapter.setData(tempEssay)
        }
        else{
            paragraphRecycler.adapter = adapter
            paragraphRecycler.layoutManager = LinearLayoutManager(requireContext())
            adapter.setData(paragraphs)
        }

        val button: Button = view.findViewById(R.id.addParagraph)
        button.setOnClickListener(){
            paragraphs.add(essayParagraph("","","",""))
            adapter.setData(paragraphs)


        }



        finishBtn.setOnClickListener {
            //add essay to database
        }

        

  

    fun constructEssayPlanData(adapter: EssayPlanAdapter,intro:LinearLayout,ID:Int):EssayPlan{
        //make essayPlan to be added to database
    }

    fun fillIn(essay:EssayPlan,intro: LinearLayout): ArrayList<essayParagraph>{
        intro.lineOfThought.setText(essay.LOT.toString())
        intro.relaventPlot.setText(essay.intro.toString())
        title.setText("TestTest")
        var topicSentences = essay.topicSentences.split("+").toMutableList()
        topicSentences.removeAt(0)
        var firstQuotes = essay.firstQuotes.split("+").toMutableList()
        firstQuotes.removeAt(0)
        var secondQuotes = essay.SecondQuotes.split("+").toMutableList()
        secondQuotes.removeAt(0)
        var thirdQuotes = essay.ThirdQuotes.split("+").toMutableList()
        thirdQuotes.removeAt(0)
        for(i in 0..(essay.numParagraph -1)){
            var essayTemp = essayParagraph(topicSentences[i],firstQuotes[i],secondQuotes[i],thirdQuotes[i])
       
                paragraphs.add(essayTemp)
        }
        return paragraphs



    }

}

ViewModel

fun checkId(id:Int):EssayPlan{
        var essay = EssayPlan(id,"","","","","","","",0)
        viewModelScope.launch(Dispatchers.IO) {
            essay = repository.check(id)
        }

        return essay
    }

repository

 fun check(id:Int):EssayPlan{
        var essayPlans: EssayPlan = essayPlanDao.checkExist(id)
        return essayPlans
    }

DAO

@Query("SELECT * FROM plans WHERE id == :id LIMIT 1")
    fun checkExist(id:Int):EssayPlan


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source