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
Post a Comment