[英]Making Changes in Layout according to the Position of ViewPager2
我想根據 ViewPager2 的 position 更改包含 ViewPager2 的布局。 示例 -> 我想在 ViewPager2 有最后一項或 position 時使按鈕可見。但我無法這樣做,任何幫助和建議都會非常有幫助謝謝。
我的適配器:
open class ImagesliderAdapter(private val context: Context, private val list: ArrayList<HomePageSlideEntity>, private val viewPager2: ViewPager2): RecyclerView.Adapter<RecyclerView.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
return MyViewHolder(LayoutInflater.from(context).inflate(R.layout.item_imageslider, parent, false))
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
val model = list[position]
if(position==list.size-1) {
viewPager2.post(runnable)
}
if(holder is MyViewHolder) {
holder.itemView.findViewById<ImageView>(R.id.ivimageslider).setImageURI(Uri.parse(model.image))
}
}
override fun getItemCount(): Int {
return list.size
}
private val runnable = Runnable {
list.addAll(list)
notifyDataSetChanged()
}
private class MyViewHolder(view: View): RecyclerView.ViewHolder(view)
}
您在適配器中使用 RecyclerView.ViewHolder 而不是 MyViewHolder。 將 RecyclerView.ViewHolder 替換為 MyViewHolder,然后它應該可以正常工作。
在ViewPager2
中使用registerOnPageChangeCallback
。
binding.viewPager2.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageScrolled(
position: Int,
positionOffset: Float,
positionOffsetPixels: Int
) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels)
Log.d("Page", "onPageScrolled: $position")
}
override fun onPageSelected(position: Int) {
super.onPageSelected(position)
Log.d("Page", "onPageSelected: $position")
// use position and do what ever you want
//for 1st page
if (position <= 0) {
btn.visibility = View.GONE
} else {
btn.visibility = View.VISIBLE
}
//for last page
if (position + 1 >= args.content.items.size) {
btn.visibility = View.GONE
} else {
btn.visibility = View.VISIBLE
}
}
override fun onPageScrollStateChanged(state: Int) {
super.onPageScrollStateChanged(state)
}
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.