0

Please help [RecyclerView] :

[ E/RecyclerView: No adapter attached; skipping layout ]

My code is :

class UsersAdapter (private val usersList:List<User>) : RecyclerView.Adapter <CustomViewHolder>() {

    override fun getItemCount(): Int {
        return usersList.size
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomViewHolder {
        val layoutInflater = LayoutInflater.from(parent?.context)
        val cellForRow = layoutInflater.inflate(R.layout.users_list, parent, false)
        return CustomViewHolder(cellForRow)
    }

    override fun onBindViewHolder(holder: CustomViewHolder, position: Int) {
        val user = usersList[position]
        Log.d("Yasser", "onResponse: ${user.name}")
        holder.view.UsersPersonName.text = user.name
        holder.view.UsersShortPersonName.text = user.name.substring(0).capitalize()
        holder.view.UsersPersonEmail.text = user.email
    }
}
class CustomViewHolder(val view: View): RecyclerView.ViewHolder(view) {

}

UserActivity:

class UsersActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_users)

        RetrofitClient.instance.getUsers().enqueue(object: Callback<List<User>>{

            override fun onResponse(call: Call<List<User>>, response: Response<List<User>>) {
                showData(response.body()!!)

            }
            override fun onFailure(call: Call<List<User>>, t: Throwable) {
            d("Fail","onFailure")
            }

        })
    }

    private fun showData(usersList: List<User>) {
        listUsersRecycle.apply {
            layoutManager = LinearLayoutManager(this@UsersActivity)
            adapter = UsersAdapter(usersList)
        }
    }

I tried a lot but it gives me the same, how can i solve this error [Kotlin]?

Mayank Patel
  • 3,868
  • 10
  • 36
  • 59
  • 4
    Possible duplicate of [recyclerview No adapter attached; skipping layout](https://stackoverflow.com/questions/29141729/recyclerview-no-adapter-attached-skipping-layout) – Pawel Apr 18 '19 at 21:55
  • In most cases this type of warning appears when list's size is 0, place a breakpoint on return usersList.size and check it's actual size on first invoke – Arthur Apr 19 '19 at 03:50

1 Answers1

0

This is work around. Edit you showData() method.

private fun showData(usersList: List<User>) {
        listUsersRecycle.layoutManager = LinearLayoutManager(this@UsersActivity)  
        //Apply layout manager here.
        listUsersRecycle.apply {
        adapter = UsersAdapter(usersList)
        }
    }