android - ListView can appear in Activity but can't appear in Fragment -


listview can appear in activity can't appear in fragment use same code in kotlin android studio 3.0?

and fragment code:

class testfrag : fragment() { var adapter : mo3dadapter?=null var listofmkabala = arraylist<meetingdetails>()   override fun oncreateview(inflater: layoutinflater?, container: viewgroup?, savedinstancestate: bundle?): view? {     return inflater!!.inflate(r.layout.fragment_test, container, false)       listofmkabala .add ( meetingdetails(" nour1", "ahmed1" , "aya1"))     listofmkabala .add ( meetingdetails(" nour2", "ahmed2" , "aya2"))     listofmkabala .add ( meetingdetails(" nour3", "ahmed3" , "aya3"))     listofmkabala .add ( meetingdetails(" nour4", "ahmed4" , "aya4"))     listofmkabala .add ( meetingdetails(" nour5", "ahmed5" , "aya5"))     listofmkabala .add ( meetingdetails(" nour6", "ahmed6" , "aya6"))       adapter = mo3dadapter (context  ,listofmkabala)     tv1.adapter = adapter  }   fun test ( view: view){  } 

this adapter:

inner class mo3dadapter: baseadapter {     var  listofmkabaln= arraylist<meetingdetails>()     var context:context?=null     constructor(context:context, listofmkabaln: arraylist<meetingdetails>):super(){         this.listofmkabaln=listofmkabaln         this.context=context     }      override fun getview(p0: int, p1: view?, p2: viewgroup?): view {         val mo3d =  listofmkabaln[p0]          var inflator = context!!.getsystemservice(context.layout_inflater_service) layoutinflater         var myview = inflator.inflate(r.layout.fragment_test, null)         myview.text1.text = mo3d.name1!!         myview.text2.text = mo3d.name2!!         myview.text3.text = mo3d.name3!!          return myview      }      override fun getitem(p0: int): {         return listofmkabaln[p0]     }      override fun getitemid(p0: int): long {         return p0.tolong()     }      override fun getcount(): int {          return  listofmkabaln.size     }  } 

you should make return statement after initialization in oncreateview().

you using kotlin-android-extensions view directly. if use way, can lisview after view created.

your code should this.

override fun oncreateview(inflater: layoutinflater?, container: viewgroup?, savedinstancestate: bundle?): view? {  return inflater!!.inflate(r.layout.fragment_test, container, false) }  override fun onviewcreated(view: view?, savedinstancestate: bundle?) {         super.onviewcreated(view, savedinstancestate)     listofmkabala .add ( meetingdetails(" nour1", "ahmed1" , "aya1"))     listofmkabala .add ( meetingdetails(" nour2", "ahmed2" , "aya2"))     listofmkabala .add ( meetingdetails(" nour3", "ahmed3" , "aya3"))     listofmkabala .add ( meetingdetails(" nour4", "ahmed4" , "aya4"))     listofmkabala .add ( meetingdetails(" nour5", "ahmed5" , "aya5"))     listofmkabala .add ( meetingdetails(" nour6", "ahmed6" , "aya6"))     adapter = mo3dadapter (context  ,listofmkabala)     tv1.adapter = adapter } 

onviewcreated() runs after view has been created. ensures view created.

you have passed same layout adapter too.

in adapter code change r.layout.fragment_test model layout.

var myview = inflator.inflate(r.layout.fragment_test, null) 

hope helps:)


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -