【发布时间】:2018-11-05 11:51:45
【问题描述】:
我一直在寻找制作recyclerview Carousel,以便在最后一个项目可见时再次填充第一个项目,并且它会一次又一次地显示。现在我知道这个答案已经回答了here 和here,但是这两个答案都没有解决我的问题。尽管项目数量增加了,但作为 recyclerview 中的项目的片段没有显示任何内容。
我将fragments 膨胀为嵌套在ViewPager 中的RecyclerView 的一个项目。接受的答案无法解决我的问题。
代码: RecyclerViewAdapterClass
fun initialize(scrollableData: ArrayList<ScrollableData>, activity: AppCompatActivity) {
this.scrollableData = scrollableData
this.activity = activity
}
override fun getItemCount() = scrollableData.size
override fun getItemViewType(position: Int): Int {
return scrollableData[position].index
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseHolder {
when (viewType) {
ScrollableItems.ABC -> {
val view = parent.inflate(R.layout.view_module_abc, false)
return ABCViewHolder(view, abcPresenterImpl, activity)
}
ScrollableItems.DEF -> {
val view = parent.inflate(R.layout.view_module_def, false)
return DEFViewHolder(view, defControlPresenter, activity)
}
else -> {
val view = parent.inflate(R.layout.view_module_ghi, false)
return GHIViewHolder(view, GHIModulePresenter, activity)
}
}
}
override fun onBindViewHolder(holder: BaseHolder, position: Int) {
holder.bindView()
}
和HomeActivity#setupRecyclerView(...)
private fun setupRecyclerView(scrollableDataList: ArrayList<ScrollableData>) {
linearLayoutManager = CustomLinearLayoutManager(applicationContext, LinearLayout.HORIZONTAL, !DeviceConfig.instance!!.isRegularDevice)
recycler_view.layoutManager = linearLayoutManager
recycler_view.adapter = mainScreenAdapter
mainScreenAdapter.initialize(scrollableDataList, this)
recycler_view.setHasFixedSize(true);
GravityPagerSnapHelper(if (DeviceConfig.instance!!.isRegularDevice) Gravity.START else Gravity.END, true, this).attachToRecyclerView(recycler_view)
recyclerViewScrollListener()
}
和 CustomLinearLayoutManager
class CustomLinearLayoutManager(context: Context, orientation: Int, reverseLayout: Boolean)
: LinearLayoutManager(context, orientation, reverseLayout) {
var isScrollEnabled = true
override fun canScrollHorizontally(): Boolean {
return isScrollEnabled && super.canScrollHorizontally()
}
override fun canScrollVertically(): Boolean {
return isScrollEnabled && super.canScrollVertically()
}
}
请帮我解决这个问题。
【问题讨论】:
-
你可以尝试使用this库。
-
@AshuTyagi 它没有帮助。
标签: android kotlin android-recyclerview