Как решить мою проблему , почему то на экране появляются далеко не все строки , а именно появляются  только первые 2 строки : package ru.myitschool.lab23

import android.annotation.SuppressLint
import android.content.ClipData
import android.content.ClipboardManager
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.util.Log
import android.view.View
import android.widget.EditText
import android.widget.LinearLayout
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.ViewModelProvider
import ru.myitschool.lab23.databinding.ActivityMainBinding
import java.math.BigDecimal

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    private lateinit var clipboard: ClipboardManager
    private lateinit var clip: ClipData

    private lateinit var outerLayout: LinearLayout
    private lateinit var metricLayout: LinearLayout
    private lateinit var textView: TextView
    private lateinit var editText: EditText

    private lateinit var textViewCaptions: Array<String>
    private lateinit var tags: Array<String>
    private lateinit var text: String
    private lateinit var tag: String

    private var changeable = true

    private var lower = 0
    private var upper = 1
    private var current = -1

    private lateinit var lengthViewModel: LengthViewModel

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val inflater = layoutInflater
        binding = ActivityMainBinding.inflate(inflater)

        setContentView(binding.root)

        // Получение параметров для lower и upper из Intent используя getInt
        intent.extras?.let {
            lower = it.getInt("lower")
            upper = it.getInt("upper")
        }

        clipboard = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager

        outerLayout = binding.container.outerLayout

        textViewCaptions = resources.getStringArray(R.array.text_view_captions)
        tags = resources.getStringArray(R.array.tags)

        val listener = View.OnClickListener { v -> setClipboard(v) }

        lengthViewModel = ViewModelProvider(this).get(LengthViewModel::class.java)
        lengthViewModel.from(14, BigDecimal.valueOf(1))
        lengthViewModel.lengthContainer()
            .observe(this) { updateEditTexts() }

        for (i in lower..upper) {
            // Создание и настройка метрических элементов пользовательского интерфейса
            metricLayout = inflater.inflate(
                R.layout.metric,
                outerLayout,
                false
            ) as LinearLayout

            tag = tags[i]

            text = textViewCaptions[i]

            metricLayout.tag = "ll$tag"

            textView = metricLayout.findViewWithTag("tv")
            textView.tag = "tv$tag"
            textView.text = text
            textView.setOnClickListener(listener)

            editText = metricLayout.findViewWithTag("et")
            editText.tag = "et$tag"
            editText.hint = lengthViewModel.getLengthValue(i).toString()

            editText.addTextChangedListener(object : TextWatcher {
                // Обработка изменения текста в EditText и обновление модели
                override fun afterTextChanged(s: Editable) {
                    if (changeable) {
                        lengthViewModel.from(i, BigDecimal(if (s.isNotEmpty()) s.toString() else "0"))
                    }
                    current = i
                }

                override fun beforeTextChanged(
                    s: CharSequence,
                    start: Int,
                    count: Int,
                    after: Int
                ) {
                }

                override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {

                }
            })

            outerLayout.addView(metricLayout)
        }

        Log.d("Main_Act", "Act created")
    }


    private fun setClipboard(v: View) {
        // Метод для установки текста в буфер обмена
        tag = v.tag.toString().substring(2)
        editText = outerLayout.findViewWithTag("et$tag")
        text = editText.text.toString()

        clip = ClipData.newPlainText("text copied", text)
        clipboard.setPrimaryClip(clip)
    }

    @SuppressLint("SetTextI18n")
    // Метод для обновления текста в EditText на основе данных из ViewModel
    private fun updateEditTexts() {
        if (changeable)
            return

        for (i in lower..upper) {
            if (i == current)
                continue

            tag = tags[i]

            metricLayout = outerLayout.findViewWithTag("ll$tag")
            editText = metricLayout.findViewWithTag("et$tag")
            editText.setText(lengthViewModel.getLengthValue(i).toString())
        }
        changeable = true
    }
}