java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageResource(int)' on a null object reference
我尝试在调试模式下启动它,这样我可能会发现问题,但我不明白为什么会提到它可以是空的。
我使用一个实时的防火墙数据库,下面是我的BgAdapter的代码,其中出现了致命的异常:
代码语言:
javascript
复制
class BgAdapter(
val context: MainActivity,
private val bgList: List<BgModel>,
private val layoutId: Int) : RecyclerView.Adapter<BgAdapter.ViewHolder>() {
//Boîte pour ranger tout les composants à contrôler
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val bgImage = view.findViewById<ImageView>(R.id.image_item)
val bgName: TextView? = view.findViewById(R.id.name_item)
val bgEditor: TextView? = view.findViewById(R.id.editor_item)
val bgFavIcon = view.findViewById<ImageView>(R.id.add_light_icon)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater
.from(parent.context)
.inflate(layoutId, parent, false)
return ViewHolder(view)
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
//Récupérer les informations des bgs
val currentBg = bgList[position]
//Récupérer le repository
val repo = BgRepository()
//Utiliser glide pour récupérer l'image à partir de son lien -> composant
Glide.with(context).load(Uri.parse(currentBg.image_url)).into(holder.bgImage)
//Mettre à jour le nom du jeu
holder.bgName?.text = currentBg.name
//Mettre à jour le nom de l'éditeur du jeu
holder.bgEditor?.text = currentBg.editor
//Vérifier si le jeu a été ajouté ou non
if (currentBg.faved) {
holder.bgFavIcon.setImageResource(R.drawable.ic_check)
} else {
holder.bgFavIcon.setImageResource(R.drawable.ic_add_light)
//Rajouter une interaction sur icône checkbox
holder.bgFavIcon.setOnClickListener {
//Inverse si le bouton est en mode "ajouté" ou non
currentBg.faved = !currentBg.faved
//Mettre à jour l'objet jeu
repo.updateBg(currentBg)
//Interaction lors du clic sur un jeu
holder.itemView.setOnClickListener {
//Afficher la popup
BgInfoPopup(this, currentBg).show()