android - RecyclerView 中的 Android ViewPager
问题描述
我有一个 RecyclerView,它的行是 ViewPagers。我在 RecyclerView Adapter 的 onBind() 方法中设置了 ViewPager 的适配器。但是当我运行该应用程序时,看起来每个 ViewPager 中的页面数在滚动 RecyclerView 后变得不正确。
这是我的 onBind() 方法的主体
val adapter = MyViewPagerAdapter(itemList[position])
myViewPager.adapter = adapter
这是 MyViewPagerAdapter 类
class MyViewPagerAdapter(val pages:List<Page>) : PagerAdapter() {
override fun isViewFromObject(view: View, `object`: Any): Boolean {
return `object` == view
}
override fun getCount() = pages.size
override fun instantiateItem(container: ViewGroup, position: Int): Any {
val v: View = LayoutInflater.from(container.context).inflate(R.layout.view_pager_row, container, false)
container.addView(v, position)
// do some bindings
return v
}
override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
try {
container.removeView(`object` as View)
} catch (e: Exception) {
}
}
PS:
最后我用了一个带有水平LinearLayoutManager和SnapHelper的RecyclerView来模拟一个ViewPager,问题就解决了。
解决方案
推荐阅读
- sql-server - 使用 EF Core 2.1 从 ASP.NET Core 2.1 Web API 向 SQL Server 数据库插入记录时出错
- sharepoint - 如何在sharepoint 2013中使用REST API和Jquery将查找(包含多列)列值放入变量中
- powershell - 使用 AD PowerShell 处理异常
- r - %do% 对比 %dopar%, %dopar% 没有做任何改变,没有警告
- android - React原生Android主题背景透明
- scala - 在 Kafka-Spark Streaming 中提取唯一记录
- java - Android Studio/Java:错误:无法比较的类型:Switch 和 boolean
- javascript - 将 onclick() 添加到 drupal 7 中的链接
- javascript - NodeJS 在继续下一次迭代之前用管道完成了文件的写入
- git - 当它的基础是另一个尚未合并的分支时如何处理拉取请求?