Reputation: 452
I use ViewPager2. So I followed some example And wrote codes. But I don't understand why it doesn't work. I don't think this code I wrote is wrong. please let me know why I can't see anything. I know that the implementation of ViewPager2 is like RecyclerView adapter, So I followed that.
class UserAdapter(context: Context,userList : List<User>) : RecyclerView.Adapter<UserAdapter.UserViewHolder>() {
val mContext = context
val mUserList : List<User> = userList
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UserViewHolder {
var view = LayoutInflater.from(mContext).inflate(R.layout.item,parent,false)
return UserViewHolder(view)
}
override fun getItemCount(): Int =0
override fun onBindViewHolder(holder: UserViewHolder, position: Int) {
holder.icon.setImageResource(mUserList.get(position).icon)
holder.textname.text = mUserList.get(position).name
holder.textage.text = mUserList.get(position).age
}
class UserViewHolder internal constructor(itemView: View) :
RecyclerView.ViewHolder(itemView){
lateinit var icon :ImageView
lateinit var textname: TextView
lateinit var textage: TextView
init{
icon = itemView.findViewById(R.id.icon)
textname = itemView.findViewById(R.id.textView)
textage = itemView.findViewById(R.id.textView2)
}
}
}
class MainActivity : AppCompatActivity() {
private lateinit var userList: ArrayList<User>
private lateinit var binding: ActivityMainBinding
private lateinit var userAdapter:UserAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.root);
userList = arrayListOf()
userList.add(User(R.drawable.child,"child","21"))
userList.add(User(R.drawable.sun,"sun","22"))
userList.add(User(R.drawable.moon,"moon","23"))
userAdapter = UserAdapter(this,userList)
binding.viewpager2.adapter = userAdapter
}
}
Upvotes: 1
Views: 1076
Reputation: 1151
Change or replace override fun getItemCount(): Int =0
override fun getItemCount(): Int = mUserList.size()
Upvotes: 2