Я использую viewpager2 вместо фрагмента. Я сделал пять просмотров на адаптере viewpager2. нет проблем при скольжении по пальцу. Но когда я скользю по коду, возникает проблема. На первой и второй страницах нет скользящей анимации. после 2 страниц я вижу скользящую анимацию. есть ли у кого эта проблема? Я попробовал этот код. Когда я нажимаю следующую кнопку, просто вызываю этот метод.
private fun moveNextPage(){
binding.registerViewpager.setCurrentItem(binding.registerViewpager.currentItem+1,true)
}
Адаптер
val mContext = context
val mRegisterList : List<RegisterData> = registerList
val mOnClickListener = onClickListener
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
var view : View ?=null
when(viewType) {
REGISTER_NICKNAME -> {
view = LayoutInflater.from(mContext).inflate(R.layout.fragment_register_nickname, parent, false)
return RegisterNickNameViewHolder(view)
}
REGISTER_BIRTHDAY->{
view = LayoutInflater.from(mContext).inflate(R.layout.fragment_register_birthyear, parent, false)
return RegisterBirthYearViewHolder(view)
}
REGISTER_GENDER->{
view = LayoutInflater.from(mContext).inflate(R.layout.fragment_register_gender, parent, false)
return RegisterGenderViewHolder(view)
}
REGISTER_HOMETOWN->{
view = LayoutInflater.from(mContext).inflate(R.layout.fragment_register_hometown, parent, false)
return RegisterHomeTownViewHolder(view)
}
REGISTER_PICTURE->{
view = LayoutInflater.from(mContext).inflate(R.layout.fragment_register_picture, parent, false)
return RegisterPictureViewHolder(view)
}
}
return RegisterNickNameViewHolder(view!!)
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
when(holder){
is RegisterNickNameViewHolder ->{
holder.registerTitle.text = mRegisterList[position].title
holder.registerDescription.text = mRegisterList[position].subtitle
}
is RegisterBirthYearViewHolder->{
holder.registerTitle.text = mRegisterList[position].title
holder.registerDescription.text = mRegisterList[position].subtitle
}
is RegisterGenderViewHolder->{
holder.registerTitle.text = mRegisterList[position].title
holder.registerDescription.text = mRegisterList[position].subtitle
}
is RegisterHomeTownViewHolder->{
holder.registerTitle.text = mRegisterList[position].title
holder.registerDescription.text = mRegisterList[position].subtitle
}
is RegisterPictureViewHolder->{
holder.registerTitle.text = mRegisterList[position].title
holder.registerDescription.text = mRegisterList[position].subtitle
}
}
}
inner class RegisterNickNameViewHolder internal constructor(itemView: View) : RecyclerView.ViewHolder(itemView){
val registerTitle :TextView =itemView.findViewById(R.id.register_title)
val registerDescription :TextView =itemView.findViewById(R.id.register_description)
val registerNickName :EditText = itemView.findViewById(R.id.register_nickname)
}
inner class RegisterBirthYearViewHolder internal constructor(itemView: View) : RecyclerView.ViewHolder(itemView){
val registerTitle :TextView =itemView.findViewById(R.id.register_title)
val registerDescription :TextView =itemView.findViewById(R.id.register_description)
val registerBirthYear : Spinner = itemView.findViewById(R.id.register_birthyear)
init{
registerBirthYear.onItemSelectedListener = object : OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>?, view: View,
position: Int, id: Long) {
mOnClickListener.selectBirthYear(registerBirthYear.selectedItem.toString())
}
override fun onNothingSelected(parent: AdapterView<*>?) {
}
}
}
}
inner class RegisterGenderViewHolder internal constructor(itemView: View) : RecyclerView.ViewHolder(itemView){
val registerTitle :TextView =itemView.findViewById(R.id.register_title)
val registerDescription :TextView =itemView.findViewById(R.id.register_description)
val registerMaleImage : ImageView = itemView.findViewById(R.id.male_image)
val registerFemaleImage : ImageView = itemView.findViewById(R.id.female_image)
val registerFemaleLayout : LinearLayout = itemView.findViewById(R.id.female_layout)
val registerMaleLayout : LinearLayout = itemView.findViewById(R.id.male_layout)
init {
registerMaleImage.run {
clipToOutline = true
setImage(mContext,drawableToUri(mContext,"gender_female"),registerFemaleImage)
setOnClickListener {
mOnClickListener.selectGender(MALE)
registerMaleImage.setImageURI(drawableToUri(mContext,"gender_male_clicked"))
registerFemaleImage.setImageURI(drawableToUri(mContext,"gender_female_unclicked"))
}
}
registerFemaleImage.run{
clipToOutline = true
setImage(mContext,drawableToUri(mContext,"gender_male"),registerMaleImage)
setOnClickListener {
mOnClickListener.selectGender(FEMALE)
registerFemaleImage.setImageURI(drawableToUri(mContext,"gender_female_clicked"))
registerMaleImage.setImageURI(drawableToUri(mContext,"gender_male_unclicked"))
}
}
}
}
inner class RegisterHomeTownViewHolder internal constructor(itemView: View) : RecyclerView.ViewHolder(itemView){
val registerTitle :TextView =itemView.findViewById(R.id.register_title)
val registerDescription :TextView =itemView.findViewById(R.id.register_description)
val registerHomeTown : Spinner = itemView.findViewById(R.id.register_hometown)
init{
registerHomeTown.onItemSelectedListener = object : OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>?, view: View,
position: Int, id: Long) {
mOnClickListener.selectHomeTown(registerHomeTown.selectedItem.toString())
}
override fun onNothingSelected(parent: AdapterView<*>?) {
}
}
}
}
inner class RegisterPictureViewHolder internal constructor(itemView: View) : RecyclerView.ViewHolder(itemView){
val registerTitle :TextView =itemView.findViewById(R.id.register_title)
val registerDescription :TextView =itemView.findViewById(R.id.register_description)
val registerPicture : ImageView = itemView.findViewById(R.id.picture_image)
init{
registerPicture.run{
clipToOutline=true
setOnClickListener {
mOnClickListener.selectPicture()
}
}
}
}
override fun getItemCount(): Int = mRegisterList.size
override fun getItemViewType(position: Int): Int {
return mRegisterList[position].viewType
}