• SettingsActivity.kt
  • SimpleAdapter.kt
  • WordLineType.kt
  • } binding.nextButton.setOnClickListener {




    Download 1,09 Mb.
    bet6/12
    Sana17.12.2023
    Hajmi1,09 Mb.
    #121185
    1   2   3   4   5   6   7   8   9   ...   12
    Bog'liq
    Matkarimov Sardor kurs ishi

    }
    binding.nextButton.setOnClickListener {
    binding.backButton.visibility = View.VISIBLE
    if (index < texts.size) setData(texts[++index])
    if (index == texts.size - 1) it.visibility = View.INVISIBLE
    }
    binding.backButton.setOnClickListener {
    binding.nextButton.visibility = View.VISIBLE
    if (index > 0) setData(texts[--index])
    if (index == 0) it.visibility = View.INVISIBLE
    }
    }

    private fun setData(text: String) {


    binding.chipGroup.removeAllViews()
    val words = text.split(" ")
    trues = mutableListOf()
    words.forEach {
    trues.add(false)
    val wordView = layoutInflater.inflate(R.layout.item_word, null)
    val wordBinding = ItemWordBinding.bind(wordView)
    wordBinding.wordView.text = it

    wordView.setOnClickListener { currentWord ->
    binding.chipGroup.forEach { word -> word.isSelected = false }
    selectedView = ItemWordBinding.bind(currentWord)
    selectedWord = selectedView?.wordView?.text.toString()
    currentWord.isSelected = true
    }
    binding.chipGroup.addView(wordView)
    }
    }

    private fun getWordType(word: String?): WordLineType {


    return when (word?.lowercase(Locale.ROOT)) {
    "men" -> WordLineType.ONE_LINE
    "maktabda", "boraman" -> WordLineType.TWO_LINE
    "o'qiyman", "testtesttesttesttesttesttesttesttest" -> WordLineType.WAVE_LINE
    "maktabga" -> WordLineType.DASHED_LINE
    else -> {
    WordLineType.SPOT_LINE
    }
    }
    }

    private fun drawLine(wordBinding: ItemWordBinding?, wordLineType: WordLineType) {


    wordBinding?.firstLineView?.visibility = View.GONE
    wordBinding?.secondLineView?.visibility = View.GONE
    wordBinding?.recyclerView?.visibility = View.GONE
    when (wordLineType) {
    WordLineType.ONE_LINE -> {
    wordBinding?.firstLineView?.visibility = View.VISIBLE
    wordBinding?.firstLineView?.background =
    resources.getDrawable(R.drawable.shape_line)
    }
    WordLineType.TWO_LINE -> {
    wordBinding?.firstLineView?.visibility = View.VISIBLE
    wordBinding?.secondLineView?.visibility = View.VISIBLE
    wordBinding?.firstLineView?.background =
    resources.getDrawable(R.drawable.shape_line)
    wordBinding?.secondLineView?.background =
    resources.getDrawable(R.drawable.shape_line)
    }
    WordLineType.DASHED_LINE -> {
    wordBinding?.firstLineView?.visibility = View.VISIBLE
    wordBinding?.firstLineView?.background =
    resources.getDrawable(R.drawable.shape_dashed_line)
    }
    WordLineType.WAVE_LINE -> {
    wordBinding?.recyclerView?.visibility = View.VISIBLE
    val waveLineAdapter = SimpleAdapter(R.layout.item_wave_line)
    wordBinding?.recyclerView?.apply {
    layoutManager = LinearLayoutManager(
    this@GrammarActivity,
    RecyclerView.HORIZONTAL,
    false
    )
    adapter = waveLineAdapter
    }
    waveLineAdapter.onItemBind = { _, view ->
    val itemBinding = ItemWaveLineBinding.bind(view)
    itemBinding.lineView.background =
    resources.getDrawable(R.drawable.ic_wave_line)
    }
    waveLineAdapter.setData(listOf(0, 0, 0, 0, 0))
    }
    else -> {
    wordBinding?.firstLineView?.visibility = View.VISIBLE
    wordBinding?.firstLineView?.background =
    resources.getDrawable(R.drawable.shape_spot_line)
    }
    }
    }
    }

    SettingsActivity.kt klass fayli kodi:
    package com.example.mygrammar

    import android.os.Bundle


    import androidx.appcompat.app.AppCompatActivity
    import com.example.mygrammar.databinding.ActivitySettingsBinding

    class SettingsActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    val binding = ActivitySettingsBinding.inflate(layoutInflater)
    setContentView(binding.root)
    }
    }

    SimpleAdapter.kt
    Adapter klassimiz fayli kodi:
    package com.example.mygrammar

    import android.view.LayoutInflater


    import android.view.View
    import android.view.ViewGroup
    import androidx.annotation.LayoutRes
    import androidx.recyclerview.widget.RecyclerView

    open class SimpleAdapter(private val itemLayout: Int) : RecyclerView.Adapter>() {

    var onItemBind: ((T, View) -> Unit)? = null

    private var items: List = listOf()

    fun setData(items: List) {
    this.items = items
    notifyDataSetChanged()
    }

    override fun getItemCount(): Int = items.size

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
    return ViewHolder(parent.inflateView(itemLayout))
    }

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


    holder.bind(items[position], onItemBind)
    }

    class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {


    fun bind(item: C, onItemBind: ((C, View) -> Unit)?) {
    onItemBind?.invoke(item, itemView)
    }
    }

    private fun ViewGroup.inflateView(@LayoutRes layout: Int): View {


    return LayoutInflater.from(context).inflate(layout, this, false)
    }
    }

    WordLineType.kt
    So’zlarning turkumlari uchun enum klass fayli kodi:
    package com.example.mygrammar

    enum class WordLineType {


    NO_LINE, ONE_LINE, TWO_LINE, DASHED_LINE, WAVE_LINE, SPOT_LINE
    }


    Download 1,09 Mb.
    1   2   3   4   5   6   7   8   9   ...   12




    Download 1,09 Mb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    } binding.nextButton.setOnClickListener {

    Download 1,09 Mb.