Прежде всего, вы должны провести рефакторинг своего кода и взглянуть на recyclerview
Вот что я предлагаю в рефакторинге. Вам не нужно иметь контекст в вашем HomeRecyclerAdapter
, поэтому просто удалите его.
Так что это должно выглядеть примерно так:
class HomeFragment : Fragment() {
lateinit var recyclerViewHomeHome: RecyclerView
lateinit var layoutManager: RecyclerView.LayoutManager
lateinit var recyclerAdapter: HomeRecyclerAdapter
private val restaurantsInfoList = arrayListOf<Restaurant>(
Restaurant("rohh", "4.5", "560/person", R.id.imgLogoLogin),
Restaurant("rohh", "4.5", "560/person", R.id.imgLogoLogin),
Restaurant("rohh", "4.5", "560/person", R.id.imgLogoLogin),
Restaurant("rohh", "4.5", "560/person", R.id.imgLogoLogin),
Restaurant("rohh", "4.5", "560/person", R.id.imgLogoLogin),
Restaurant("rohh", "4.5", "560/person", R.id.imgLogoLogin),
Restaurant("rohh", "4.5", "560/person", R.id.imgLogoLogin)
)
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment_home, container, false)
recyclerViewHomeHome = view.findViewById(R.id.recyclerViewHomeHome)
layoutManager = LinearLayoutManager(this)
recyclerAdapter = HomeRecyclerAdapter(restaurantsInfoList)
recyclerViewHomeHome.layout = layoutManager
recyclerViewHomeHome.adapter = recyclerAdapter
return view
}
}
и для вашего адаптера вы можете использовать много kotlin прочность:
class HomeRecyclerAdapter(val itemList: ArrayList<Restaurant>) :
RecyclerView.Adapter<HomeRecyclerAdapter.homeViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): homeViewHolder {
homeViewHolder.from(parent)
}
override fun getItemCount(): Int = itemList.size
override fun onBindViewHolder(holder: homeViewHolder, position: Int) {
val restaurant = itemList[position]
holder.bind(restaurant)
}
class homeViewHolder private constructor(view: View) : RecyclerView.ViewHolder(view) {
val txtRestaurantNameSingle: TextView = view.findViewById(R.id.txtRestaurantNameSingle)
val txtPriceSingle: TextView = view.findViewById(R.id.txtPriceSingle)
val ratingRecyclerViewSingle: TextView = view.findViewById(R.id.ratingRecyclerViewSingle)
val imgRecyclerViewSingle: ImageView = view.findViewById(R.id.imgRecyclerViewSingle)
fun bind(item: Restaurant){
txtRestaurantNameSingle.text = item.name
txtPriceSingle.text = item.cost_for_one
imgRecyclerViewSingle.setBackgroundResource(item.image_url)
ratingRecyclerViewSingle.text = item.rating
}
companion object {
fun from(parent: ViewGroup): ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.recycler_view_single_row_item, parent, false)
return homeViewHolder(view)
}
}
}
}