0

I am getting a NPE error I don't know why, hence my gridView is not getting populated. This drives me crazy since a week. Any help would be really appreciated.

Attempt to invoke virtual method 'void android.widget.GridView.setAdapter(android.widget.ListAdapter)' on a null object reference at pe.d.myapplication.ui.fragments.HomeFragment.onCreateView(HomeFragment.kt:49)

=> cardview_grid.adapter = adapterHome

class MainActivity : AppCompatActivity() {

private lateinit var binding: ActivityMainBinding
private lateinit var arrayList: ArrayList<Item>
lateinit var homeViewModel: HomeViewModel


override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    binding = ActivityMainBinding.inflate(layoutInflater)
    setContentView(binding.root)

    ViewModelProvider(this).get(HomeViewModel::class.java)


    val navView: BottomNavigationView = binding.navView

    val navController = findNavController(R.id.nav_host_fragment_activity_main)
    // Passing each menu ID as a set of Ids because each
    // menu should be considered as top level destinations.
    val appBarConfiguration = AppBarConfiguration(
        setOf(
            R.id.navigation_home,
            R.id.navigation_profile,
            R.id.navigation_workout,
            R.id.navigation_challenges,
            R.id.navigation_fns
        )
    )
    setupActionBarWithNavController(navController, appBarConfiguration)
    navView.setupWithNavController(navController)

}

}

class HomeFragment : Fragment(R.layout.fragment_home) {

lateinit var homeViewModel: HomeViewModel
private var _binding: FragmentHomeBinding? = null
private lateinit var arrayList: ArrayList<Item>
lateinit var adapterHome: ItemAdapter_home

private val binding get() = _binding!!

override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {


    homeViewModel = ViewModelProvider(this).get(HomeViewModel::class.java)

    _binding = FragmentHomeBinding.inflate(inflater, container, false)
    val root: View = binding.root


    arrayList = ArrayList<Item>()
    arrayList.add(Item("Copacabana", R.drawable.item_copacabana_image, "19"))
    adapterHome = ItemAdapter_home(activity, arrayList)
    cardview_grid.adapter = adapterHome

    return root
}


override fun onDestroyView() {
    super.onDestroyView()
    _binding = null
}

class ItemAdapter_home: BaseAdapter

{
    var ctx : Context? = null
    var list = ArrayList<Item>()

    constructor(ctx: Context?, list: ArrayList<Item> ) : super() {
        this.ctx = ctx
        this.list = list
    }

    override fun getCount(): Int {
        return list.size
    }

    override fun getItem(position: Int): Any {
        return position
    }

    override fun getItemId(position: Int): Long {
        return position.toLong()
    }

    override fun getView(p0: Int, convertView: View?, p2: ViewGroup): View {

        var item : Item = this.list[p0]
        val inflater: LayoutInflater = ctx!!.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
        val view:View = inflater.inflate(R.layout.grid_item, null)

        view.prog_img_home.setImageResource(item.prog_img_home!!)
        view.prog_name_home.text = item.prog_name_home!!
        view.nb_clap_home.text = item.nb_clap_home!!

        return view!!
    }
}

}

class HomeViewModel : ViewModel() {

private val _text = MutableLiveData<String>().apply {
    value = "This is home Fragment"
}
val text: LiveData<String> = _text

}

XML

<GridView
    android:id="@+id/cardview_grid"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Home page"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    android:numColumns="2"
    android:verticalSpacing="15dp"
    />

<ListView
    android:id="@+id/lvtablefriend"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

<pe.d.myapplication.ui.AutoScrollingTextView
    android:id="@+id/defile"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="24dp"
    android:ellipsize="marquee"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:marqueeRepeatLimit="marquee_forever"
    android:scrollHorizontally="true"
    android:singleLine="true"
    android:text="I am just getting crazy..."
    android:textColor="@android:color/holo_orange_dark"
    android:textStyle="bold|italic"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView" />
Adam Millerchip
  • 20,844
  • 5
  • 51
  • 74
b4tos4i
  • 1
  • 1

0 Answers0