Kotlin Dialog aus Adapter aufrufen

  • Antworten:2
  • Bentwortet
  • Forum-Beiträge: 490

21.11.2021, 21:09:47 via Website

Hallo zusammen

Ich möchte aus meinem Adapter

package ch.robbisoft.klassennotfall

import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.TextView
import android.widget.Toast
import android.content.DialogInterface
import androidx.fragment.app.FragmentManager

class TelAdapter(context: Context) : BaseAdapter(), DialogInterface.OnClickListener {

private val inflater = LayoutInflater.from(context)
private val ctx = context
public var counter : Int = 0
public var nliste = arrayListOf<Person>()
private lateinit var dialog: DialogFrag

override fun getCount(): Int {
    return counter
}

override fun getItem(position: Int): Any {
    return nliste[position]
}

override fun getItemId(position: Int): Long {
    return position.toLong()
}

override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
    val view : View
    if (convertView != null) {
        view = convertView
    }else{
        view = inflater.inflate(R.layout.klass_list, parent, false)
    }

    val persdat = nliste[position]
    val obj_name = view.findViewById<TextView>(R.id.txt_klassname)
    val obj_mutter = view.findViewById<TextView>(R.id.txt_klassmutter)
    val obj_vater = view.findViewById<TextView>(R.id.txt_klassvater)
    val obj_allg = view.findViewById<TextView>(R.id.txt_klassallgemein)

    obj_name.text = persdat.pname
    obj_mutter.text = persdat.telmutter
    obj_vater.text = persdat.telvater
    obj_allg.text = persdat.telalg

    obj_name.setOnClickListener {
        Toast.makeText(ctx, "Das ist der Name " + persdat.pname, Toast.LENGTH_LONG).show()
    }
    obj_mutter.setOnClickListener {
        Toast.makeText(ctx, "Das ist die Mutter", Toast.LENGTH_LONG).show()
    }
    obj_vater.setOnClickListener {
        Toast.makeText(ctx, "Das ist der Vater", Toast.LENGTH_LONG).show()
    }
    obj_allg.setOnClickListener {
        Toast.makeText(ctx, "Das ist das Allgemeine", Toast.LENGTH_LONG).show()
    }

    obj_name.setOnLongClickListener {
        dialog = DialogFrag()
        dialog.show(supportFragmentManager, DialogFrag.TAG)
        true
    }
    obj_mutter.setOnLongClickListener {
        Toast.makeText(ctx, "langer klick", Toast.LENGTH_LONG).show()
        true
    }
    obj_vater.setOnLongClickListener {
        Toast.makeText(ctx, "langer klick", Toast.LENGTH_LONG).show()
        true
    }
    obj_allg.setOnLongClickListener {
        Toast.makeText(ctx, "langer klick", Toast.LENGTH_LONG).show()
        true
    }

    return view
}

override fun onClick(p0: DialogInterface?, p1: Int) {
    TODO("Not yet implemented")
}

}

einen Dialog aufrufen.
Aber ich bleibe in der folgenden Zeile hängen

dialog.show(supportFragmentManager, DialogFrag.TAG)

Den "supportFragmentManager" will er nicht kennen. Dazu benötige ich die Klasse AppCompatActivity. Kann ich mein Adapter von der Klasse ableiten oder wie komme ich zu meinem Fragmentmanager?

Gruss Renato

Kommentieren