Android Kotlin: Рекурсивный ListView OnClickListener - PullRequest
0 голосов
/ 10 июля 2020

Разные строки отображаются фрагментом. Когда вы щелкаете по строке, должны отображаться новые строки (я нахожусь прямо сейчас). В общем, кнопка возврата должна быть доступна для установки, чтобы я мог перемещаться по разным уровням.

Ошибки не отображаются, но новый список (Facebook2, ...) не отображается.

Это правильный путь, или мне следует наложить конструктор фрагмента и передать новый список, а затем смонтировать новый фрагмент?

Интеграция фрейма:

package com.example.evpic.ui.main

import android.content.Context
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter


class SectionsPagerAdapter(private val context: Context, fm: FragmentManager)
    : FragmentPagerAdapter(fm) {

    override fun getItem(position: Int): Fragment {

        if (position ==0){
            return LeftFragment.newInstance(position + 1)
        }else if (position ==1){
            return BoardFragment.newInstance(position + 1)
        }else if (position ==2){
            return RightFragment.newInstance(position + 1)
        }else{
            return BoardFragment.newInstance(position + 1)
        }
    }

Вот строки:

package com.example.evpic.ui.main

import android.content.Context
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.*
import androidx.fragment.app.Fragment
import com.example.evpic.R


class BoardFragment : Fragment() {

    internal class MyAdapter constructor(
        val c: Context,
        val title: Array<String>,
        val description: Array<String>,
        val imgs: Array<Int>
    ) : ArrayAdapter<String>(c, R.layout.row, R.id.textView1, title) {

        override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
            val layoutInflater: LayoutInflater =  c.applicationContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater

            val row: View = layoutInflater.inflate(R.layout.row, parent, false)
            val images = row.findViewById<ImageView>(R.id.image)
            val myTitle = row.findViewById<TextView>(R.id.textView1)
            val myDescription = row.findViewById<TextView>(R.id.textView2)

            images.setImageResource(imgs[position])
            myTitle.text = title[position]
            myDescription.text = description[position]

            row.setOnClickListener { view ->
                Toast.makeText(c, "Line clicked", Toast.LENGTH_SHORT).show()

                val layoutInflater2: LayoutInflater =  c.applicationContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
                val root: View = layoutInflater2.inflate(R.layout.fragment_main, parent, false)
                var listView: ListView = root.findViewById(R.id.listView)
                var mTitle = arrayOf("Facebook2", "Whatsapp2", "Twitter2", "Instagram2", "Youtube2")
                var mDescription = arrayOf(
                    "Facebook2 Description",
                    "Whatsapp2 Description",
                    "Twitter2 Description",
                    "Instagram2 Description",
                    "Youtube2 Description"
                )
                var images = arrayOf(
                    R.drawable.o_one,
                    R.drawable.o_one,
                    R.drawable.o_one,
                    R.drawable.o_one,
                    R.drawable.o_one
                )
                val ada: MyAdapter =  MyAdapter(c, mTitle, mDescription, images)
                listView.setAdapter(ada)
            }
            return row
        }
    }



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


    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {

        val root = inflater.inflate(R.layout.fragment_main, container, false)
        var listView: ListView = root.findViewById(R.id.listView)
        var mTitle = arrayOf("Facebook", "Whatsapp", "Twitter", "Instagram", "Youtube")
        var mDescription = arrayOf(
            "Facebook Description",
            "Whatsapp Description",
            "Twitter Description",
            "Instagram Description",
            "Youtube Description"
        )
        var images = arrayOf(
            R.drawable.o_one,
            R.drawable.o_one,
            R.drawable.o_one,
            R.drawable.o_one,
            R.drawable.o_one
        )
        val ada: MyAdapter =  MyAdapter(this.activity!!.getApplicationContext(), mTitle, mDescription, images)
        listView.setAdapter(ada)

        return root
    }
    
    companion object {
        private const val ARG_SECTION_NUMBER = "section_number"

        @JvmStatic
        fun newInstance(sectionNumber: Int): RightFragment {
            return RightFragment().apply {
                arguments = Bundle().apply {
                    putInt(ARG_SECTION_NUMBER, sectionNumber)
                }
            }
        }
    }
}
...