How to use Listview
within Fragment
. I have implemented almost similar code in an Activity
, there it worked perfectly. But in case of Fragment
, I have only modified a little to avoid the errors showed by Android Studio
. But, it's not working here.
here is my code:
class FragmentMascot : Fragment() {
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view= inflater!!.inflate(R.layout.fragment_mascot, container, false)
val listview = view.findViewById<ListView>(R.id.maskot_list)
//listview.adapter = MaskotAdapter(this) -> this does't work in fragment but worked in activity
listview.adapter = MaskotAdapter(context)
return view
}
and my MaskotAdapter
class is:
private class MaskotAdapter(context: Context): BaseAdapter() {
private val mContext: Context
//values can be entered from database too.
private val maskot_names_list = arrayListOf<String>("","","","")
private val maskot_details_list = arrayListOf<String>("","","","")
private val maskot_images_list = arrayListOf<Int>(0,0,0,0)
init {
this.mContext = context
}
//row count
override fun getCount(): Int {
return maskot_names_list.size //To change body of created functions use File | Settings | File Templates.
}
override fun getItem(position: Int): Any {
return "test String" //To change body of created functions use File | Settings | File Templates.
}
override fun getItemId(position: Int): Long {
return position.toLong()//To change body of created functions use File | Settings | File Templates.
}
//renders each row
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
val layoutInflater = LayoutInflater.from(mContext)
val maskot_row=layoutInflater.inflate(R.layout.activity_maskot_fragment, parent, false)
val maskot_names = maskot_row.findViewById<TextView>(R.id.maskot_name)
maskot_names.text=maskot_names_list.get(position)
// showing ??? if maskot name is empty
// and giving it a little padding top, to not to keep it on top
if(maskot_names.text=="")
{
maskot_names.text="???"
maskot_names.setPadding( 0, 16, 0, 0)
}
val maskot_details = maskot_row.findViewById<TextView>(R.id.maskot_details)
maskot_details.text=maskot_details_list.get(position)
if(maskot_images_list.get(position)!=0)
{
// showing particular maskot image if maskot image is not empty
val maskot_image = maskot_row.findViewById<ImageView>(R.id.maskot_image)
maskot_image.setImageResource(maskot_images_list.get(position))
}
return maskot_row
}
}