i want to insert menu gridview in tablayout with kotlin. i have been searching for many references in google but it wont help, still getting 1 error in adapter = FoodAdapter(this, foodsList)
. it says "Type missmatch : inferred type as fragmentHome but Context was expected". this is my code for fragmentHome.kt
package com.example.ako.nextbrilliantgeneration
import android.os.Bundle
import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.content.Context
import android.support.v4.app.FragmentActivity
import kotlinx.android.synthetic.main.fragment_fragment_home.*
import kotlinx.android.synthetic.main.menu_entry.view.*
private const val ARG_PARAM1 = "param1"
private const val ARG_PARAM2 = "param2"
class fragmentHome : Fragment() {
var adapter: FoodAdapter? = null
var foodsList = ArrayList<Menu>()
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_fragment_home, container, false)
foodsList.add(Menu("Coffee", R.drawable.profile))
foodsList.add(Menu("Espersso", R.drawable.profile))
foodsList.add(Menu("French Fires", R.drawable.profile))
foodsList.add(Menu("Honey",R.drawable.profile))
foodsList.add(Menu("Strawberry", R.drawable.profile))
foodsList.add(Menu("Sugar cubes", R.drawable.profile))
adapter = FoodAdapter(this, foodsList)
gvFoods.adapter = adapter
}
class FoodAdapter : BaseAdapter {
var foodsList = ArrayList<Menu>()
var context: Context? = null
constructor(context: Context, foodsList: ArrayList<Menu>) : super() {
this.context = context
this.foodsList = foodsList
}
override fun getCount(): Int {
return foodsList.size
}
override fun getItem(position: Int): Any {
return foodsList[position]
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
val food = this.foodsList[position]
var inflator = context!!.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
var foodView = inflator.inflate(R.layout.menu_entry, null)
foodView.imgFood.setImageResource(food.image!!)
foodView.tvName.text = food.name!!
return foodView
}
}
}
is there any solution?
thanks