1
votes

Erreur lors de la création de la vue de liste personnalisée dans le fragment. Activité requise, fragment trouvé

J'ai décidé de créer une vue de liste personnalisée dans mon fragment, mais j'obtiens une erreur:

FragmentOne.kt: (41, 53): Incompatibilité de type: le type inféré est FragmentOne mais une activité était attendue.

Code ci-dessous. p>

p> > > > p> p> p> p> p> p> p> p>

class MyListAdapterInFragment(private val context: Activity, private val title: Array<String>, private val date: Array<String>, private val imgid: Array<Int>)
    : ArrayAdapter<String>(context, R.layout.list_iteminfragment, title) {

    override fun getView(position: Int, view: View?, parent: ViewGroup): View {
        val inflater = context.layoutInflater
        val rowView = inflater.inflate(R.layout.list_iteminfragment, null, true)

        val titleText = rowView.findViewById(R.id.title) as TextView
        val imageView = rowView.findViewById(R.id.imageViewInFragment) as ImageView
        val subtitleText = rowView.findViewById(R.id.date) as TextView

        titleText.text = title[position]
        imageView.setImageResource(imgid[position])
        subtitleText.text = date[position]

        return rowView
    }
}


2 commentaires

MyListAdapterInFragment (this, name, date, imgId) - Remplacez this par activity .


Je ne sais pas pourquoi mais votre code devrait afficher l'erreur MyListAdapterInFragment (this, name, date, imgId) ici lorsque vous passez un contexte de fragment où le contexte d'activité est requis


3 Réponses :


0
votes

Modifiez ceci:

val myListAdapter = MyListAdapterInFragment (this, name, date, imgId)

À ceci:

val myListAdapter = MyListAdapterInFragment (activité, nom, date, imgId)


0 commentaires

0
votes

Utilisez view.context au lieu de this

val myListAdapter = MyListAdapterInFragment(view.context,name,date,imgId)


0 commentaires

0
votes

La classe de fragment n'étend pas la classe de contexte dans sa hiérarchie. Par conséquent, nous ne pouvons pas la passer à la place de contexte .

Cependant, vous pouvez apporter du contexte à l'intérieur du fragment de deux manières.

  1. Utilisation de l ' activité parent sur laquelle le fragment est gonflé: en tapant activité à l'endroit où contexte est nécessaire. -> Dans votre cas: val myListAdapter = MyListAdapterInFragment (activité, nom, date, imgId)

  2. Utilisation du contexte de la variable inflater que nous recevons dans la méthode onCreateView () : en tapant inflater. contexte -> Dans votre cas: Créez une propriété val mContext: Context . attribuez-lui la valeur mContext = inflater.context dans la méthode onCreateView (). Ensuite, utilisez-le dans votre objet adaptateur comme val myListAdapter = MyListAdapterInFragment (mContext, nom, date, imgId)


0 commentaires