Click here to Skip to main content
15,889,992 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
i ran the code but i have this:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.intskot, PID: 31012
    java.lang.IllegalArgumentException: Path must not be empty.
        at com.squareup.picasso.Picasso.load(Picasso.java:332)
        at com.example.intskot.adapter.StoryAdapter$userInfo$1.onDataChange(StoryAdapter.kt:101)
        at com.google.firebase.database.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:75)
        at com.google.firebase.database.core.view.DataEvent.fire(DataEvent.java:63)
        at com.google.firebase.database.core.view.EventRaiser$1.run(EventRaiser.java:55)
        at android.os.Handler.handleCallback(Handler.java:907)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7478)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:941)


my code is:

package com.example.intskot.adapter

import android.content.Context
import android.content.Intent
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.annotation.NonNull
import androidx.recyclerview.widget.RecyclerView
import com.example.intskot.AddStoryActivity
import com.example.intskot.R
import com.example.intskot.model.Story
import com.example.intskot.model.User
import com.google.firebase.database.DataSnapshot
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.FirebaseDatabase
import com.google.firebase.database.ValueEventListener
import com.squareup.picasso.Picasso
import de.hdodenhof.circleimageview.CircleImageView

class StoryAdapter(private val mContext: Context, private val mStory: List<Story>):
RecyclerView.Adapter<StoryAdapter.ViewHolder>()
{
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder
    {
        return if (viewType == 0)
        {
            val view = LayoutInflater.from(mContext).inflate(R.layout.add_story_item, parent, false)
            this.ViewHolder(view)
        }
        else
        {
            val view = LayoutInflater.from(mContext).inflate(R.layout.story_item, parent, false)
            this.ViewHolder(view)
        }
    }
    override fun getItemCount(): Int {
        return mStory.size
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int)
    {
        val story = mStory[position]

        userInfo(holder, story.getStoryid(), position)

        holder.itemView.setOnClickListener {
            val intent = Intent(mContext, AddStoryActivity::class.java)
            intent.putExtra("userid", story.getUserid())
            mContext.startActivity(intent)
        }
    }

    inner  class ViewHolder(@NonNull itemView: View) : RecyclerView.ViewHolder(itemView)
    {
        //StoryItem
        var storyimageseen: CircleImageView? = null
        var storyimage: CircleImageView? = null
        var storyusername: TextView? = null

        //AddStoryItem
        var storyplusbtn: ImageView? = null
        var addstorytext: TextView? = null

        init {
            //StoryItem
            storyimageseen = itemView.findViewById(R.id.story_image_seen)
            storyimage = itemView.findViewById(R.id.story_image)
            storyusername = itemView.findViewById(R.id.story_user_name)

            //AddStoryItem
            storyplusbtn = itemView.findViewById(R.id.story_add)
            addstorytext = itemView.findViewById(R.id.add_story_text)

        }
    }

    override fun getItemViewType(position: Int): Int {
        if (position == 0)
        {
            return  0
        }

        return 1
    }

    private fun userInfo(viewHolder: ViewHolder, userId: String, position: Int)
    {
        val usersRef = FirebaseDatabase.getInstance().reference.child("Users").child(userId)

        usersRef.addValueEventListener(object : ValueEventListener
        {
            override fun onDataChange(p0: DataSnapshot)
            {
                if (p0.exists() ) {

                    val user = p0.getValue<User>(User::class.java)

                    Picasso.get().load(user!!.getImage()).placeholder(R.drawable.profile).into(viewHolder.storyimage)

                    if (position != 0)
                    {

                        Picasso.get().load(user.getImage()).placeholder(R.drawable.profile).into(viewHolder.storyimageseen)

                        viewHolder.storyusername!!.text = user.getUsername()

                    }
                }
            }

            override fun onCancelled(p0: DatabaseError) {

            }
        })
    }
}


What I have tried:

i tried to make it nonnull but didn't work out.
it says the path must not be empty but it takes data from this:
Picasso.get().load(user.getImage()).placeholder(R.drawable.profile).into(viewHolder.storyimageseen)
doesnt it?
Posted
Updated 22-Oct-20 0:22am

1 solution

The error message is clear, you are sending a null parameter. That means that user.getImage() is most likely null. So break that down into its constituent parts and use your debugger to find out why.
 
Share this answer
 
v2
Comments
Orestis Tsanakas 29-Oct-20 6:23am    
thanks richard... ok i tried everything and the getimage is not null as there is a bind with an image. i dont know what else to do. without .into(viewHolder.storyimage) is working fine so the problem must be that but i want the viewholder in order to show the photo
Richard MacCutchan 29-Oct-20 6:27am    
Well something is null, and you are the only person who can find out what it is. So use the debugger to trace through the code.

The problem with compound statements as above is that it is not easy to determine which part causes the problem. So you may need to break it down into its separate parts to find out.
Orestis Tsanakas 30-Oct-20 4:43am    
everything is working good now .thanks Richard again

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900