fix:社区搜索改为懒加载后,切换浅色模式crash
This commit is contained in:
@ -105,7 +105,7 @@ class AmwayFragment : LazyListFragment<AmwayListItemData, AmwayViewModel>() {
|
||||
super.initRealView()
|
||||
|
||||
mExposureListener = ExposureListener(this, mAdapter!!)
|
||||
mListRv.addOnScrollListener(mExposureListener)
|
||||
mListRv?.addOnScrollListener(mExposureListener)
|
||||
|
||||
if (!mUseAlternativeLayout) {
|
||||
initDefaultLayout()
|
||||
@ -282,9 +282,9 @@ class AmwayFragment : LazyListFragment<AmwayListItemData, AmwayViewModel>() {
|
||||
private fun scrollToTop() {
|
||||
val firstItemPosition = mLayoutManager.findFirstVisibleItemPosition()
|
||||
if (firstItemPosition >= 10) {
|
||||
mListRv.scrollToPosition(6)
|
||||
mListRv?.scrollToPosition(6)
|
||||
}
|
||||
mListRv.smoothScrollToPosition(0)
|
||||
mListRv?.smoothScrollToPosition(0)
|
||||
mDefaultBinding?.appbar?.setExpanded(true)
|
||||
}
|
||||
|
||||
|
||||
@ -51,16 +51,16 @@ class CategoryDirectoryFragment : LazyListFragment<CategoryEntity, CategoryDirec
|
||||
onLoadRefresh()
|
||||
|
||||
if (arguments?.getBoolean(EntranceConsts.KEY_IS_HOME) == true) {
|
||||
mListRv.setPadding(
|
||||
mListRv?.setPadding(
|
||||
0,
|
||||
context?.resources?.getDimension(R.dimen.home_recyclerview_padding_top)?.toInt() ?: 0,
|
||||
0,
|
||||
0
|
||||
)
|
||||
mListRv.clipToPadding = false
|
||||
mListRv?.clipToPadding = false
|
||||
}
|
||||
|
||||
mListRv.setBackgroundColor(R.color.background_white.toColor(requireContext()))
|
||||
mListRv?.setBackgroundColor(R.color.background_white.toColor(requireContext()))
|
||||
mAdapter.recyclerView = mListRv
|
||||
mListRefresh?.isEnabled = false
|
||||
}
|
||||
@ -95,9 +95,9 @@ class CategoryDirectoryFragment : LazyListFragment<CategoryEntity, CategoryDirec
|
||||
|
||||
override fun onDarkModeChanged() {
|
||||
super.onDarkModeChanged()
|
||||
mListRv.setBackgroundColor(R.color.background_white.toColor(requireContext()))
|
||||
mListRv.adapter?.run {
|
||||
mListRv.recycledViewPool.clear()
|
||||
mListRv?.setBackgroundColor(R.color.background_white.toColor(requireContext()))
|
||||
mListRv?.adapter?.run {
|
||||
mListRv?.recycledViewPool?.clear()
|
||||
notifyItemRangeChanged(0, itemCount)
|
||||
}
|
||||
}
|
||||
|
||||
@ -78,9 +78,9 @@ class ForumArticleAskListFragment : LazyListFragment<AnswerEntity, ForumArticleA
|
||||
|
||||
override fun onFragmentFirstVisible() {
|
||||
super.onFragmentFirstVisible()
|
||||
mListRv.overScrollMode = View.OVER_SCROLL_NEVER
|
||||
mListRv?.overScrollMode = View.OVER_SCROLL_NEVER
|
||||
mListRefresh?.isEnabled = false
|
||||
mListRv.setBackgroundColor(R.color.background_white.toColor(requireContext()))
|
||||
mListRv?.setBackgroundColor(R.color.background_white.toColor(requireContext()))
|
||||
mScrollCalculatorHelper = ForumScrollCalculatorHelper(R.id.horizontalVideoView, R.id.verticalVideoView, 0)
|
||||
|
||||
view?.setBackgroundColor(R.color.background_white.toColor(requireContext()))
|
||||
@ -97,7 +97,7 @@ class ForumArticleAskListFragment : LazyListFragment<AnswerEntity, ForumArticleA
|
||||
|
||||
onLoadRefresh()
|
||||
|
||||
mListRv.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||
mListRv?.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||
|
||||
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
|
||||
super.onScrollStateChanged(recyclerView, newState)
|
||||
|
||||
@ -49,7 +49,7 @@ class ForumActivityFragment : LazyListFragment<ForumActivityEntity, ForumActivit
|
||||
initCategoryView(ArrayList(it))
|
||||
}
|
||||
|
||||
mListRv.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||
mListRv?.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
||||
super.onScrolled(recyclerView, dx, dy)
|
||||
translationY = recyclerView.computeVerticalScrollOffset()
|
||||
|
||||
@ -84,7 +84,7 @@ class ForumArticleListFragment : LazyListFragment<ArticleEntity, ForumArticleLis
|
||||
mListRefresh?.isEnabled = mRefreshEnable
|
||||
})
|
||||
|
||||
mListRv.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||
mListRv?.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
|
||||
super.onScrollStateChanged(recyclerView, newState)
|
||||
mScrollCalculatorHelper?.onScrollStateChanged(mListRv, newState)
|
||||
@ -218,7 +218,7 @@ class ForumArticleListFragment : LazyListFragment<ArticleEntity, ForumArticleLis
|
||||
|
||||
override fun scrollToTop() {
|
||||
mBinding?.run {
|
||||
mListRv.scrollToPosition(0)
|
||||
mListRv?.scrollToPosition(0)
|
||||
appbar.setExpanded(true)
|
||||
}
|
||||
}
|
||||
@ -353,7 +353,10 @@ class ForumArticleListFragment : LazyListFragment<ArticleEntity, ForumArticleLis
|
||||
override fun onDarkModeChanged() {
|
||||
super.onDarkModeChanged()
|
||||
if (parentFragment is CommunityHomeFragment && mListRv != null) {
|
||||
(parentFragment as CommunityHomeFragment).translateTopBg(mListRv.computeVerticalScrollOffset() - 8F.dip2px())
|
||||
mListRv?.let {
|
||||
(parentFragment as CommunityHomeFragment).translateTopBg(it.computeVerticalScrollOffset() - 8F.dip2px())
|
||||
}
|
||||
|
||||
}
|
||||
mBinding?.run {
|
||||
initSkeleton()
|
||||
|
||||
@ -80,8 +80,8 @@ class ForumContentSearchListFragment : LazyListFragment<AnswerEntity, ForumConte
|
||||
mBbsId = arguments?.getString(EntranceConsts.KEY_BBS_ID) ?: ""
|
||||
mLocation = arguments?.getString(EntranceConsts.KEY_LOCATION) ?: LOCATION_COMMUNITY
|
||||
super.onFragmentFirstVisible()
|
||||
mListRv.overScrollMode = View.OVER_SCROLL_NEVER
|
||||
mListRv.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.background_white))
|
||||
mListRv?.overScrollMode = View.OVER_SCROLL_NEVER
|
||||
mListRv?.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.background_white))
|
||||
mReuseNoData?.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.background_white))
|
||||
mBinding?.run {
|
||||
fixedTopFilterView.run {
|
||||
@ -120,7 +120,7 @@ class ForumContentSearchListFragment : LazyListFragment<AnswerEntity, ForumConte
|
||||
|
||||
override fun onDarkModeChanged() {
|
||||
super.onDarkModeChanged()
|
||||
mListRv.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.background_white))
|
||||
mListRv?.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.background_white))
|
||||
mReuseNoData?.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.background_white))
|
||||
}
|
||||
|
||||
|
||||
@ -44,8 +44,8 @@ class UserSearchListFragment : LazyListFragment<FollowersOrFansEntity, UserSearc
|
||||
|
||||
override fun onFragmentFirstVisible() {
|
||||
super.onFragmentFirstVisible()
|
||||
mListRv.overScrollMode = View.OVER_SCROLL_NEVER
|
||||
mListRv.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.background_white))
|
||||
mListRv?.overScrollMode = View.OVER_SCROLL_NEVER
|
||||
mListRv?.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.background_white))
|
||||
mReuseNoData?.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.background_white))
|
||||
}
|
||||
|
||||
@ -65,7 +65,7 @@ class UserSearchListFragment : LazyListFragment<FollowersOrFansEntity, UserSearc
|
||||
|
||||
override fun onDarkModeChanged() {
|
||||
super.onDarkModeChanged()
|
||||
mListRv.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.background_white))
|
||||
mListRv?.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.background_white))
|
||||
mReuseNoData?.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.background_white))
|
||||
}
|
||||
}
|
||||
@ -82,15 +82,15 @@ class ColumnCollectionDetailFragment : LazyListFragment<LinkEntity, ColumnCollec
|
||||
|
||||
mExposureListener = ExposureListener(this, provideListAdapter())
|
||||
|
||||
mListRv.clipToPadding = false
|
||||
mListRv.layoutManager = gridLayoutManager
|
||||
mListRv.addOnScrollListener(mExposureListener!!)
|
||||
mListRv?.clipToPadding = false
|
||||
mListRv?.layoutManager = gridLayoutManager
|
||||
mListRv?.addOnScrollListener(mExposureListener!!)
|
||||
if (mListViewModel.rowCount() == 1) {
|
||||
mListRv.setPadding(16F.dip2px(), 0, 16F.dip2px(), 0)
|
||||
mListRv.addItemDecoration(GridSpacingItemDecoration(mListViewModel.rowCount(), 16F.dip2px(), false))
|
||||
mListRv?.setPadding(16F.dip2px(), 0, 16F.dip2px(), 0)
|
||||
mListRv?.addItemDecoration(GridSpacingItemDecoration(mListViewModel.rowCount(), 16F.dip2px(), false))
|
||||
} else {
|
||||
mListRv.setPadding(16F.dip2px(), 8F.dip2px(), 16F.dip2px(), 0)
|
||||
mListRv.addItemDecoration(GridSpacingItemDecoration(mListViewModel.rowCount(), 12F.dip2px(), false))
|
||||
mListRv?.setPadding(16F.dip2px(), 8F.dip2px(), 16F.dip2px(), 0)
|
||||
mListRv?.addItemDecoration(GridSpacingItemDecoration(mListViewModel.rowCount(), 12F.dip2px(), false))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -102,18 +102,18 @@ class CommonCollectionDetailFragment : LazyListFragment<LinkEntity, CommonCollec
|
||||
mAdapter?.collectionStyle = mCollectionStyle
|
||||
if (mCollectionStyle == "1-2") {
|
||||
mLayoutManager = FixGridLayoutManager(requireContext(), 2)
|
||||
mListRv.layoutManager = mLayoutManager
|
||||
mListRv?.layoutManager = mLayoutManager
|
||||
}
|
||||
mListRv.removeItemDecorationAt(0)
|
||||
mListRv.addItemDecoration(itemDecoration)
|
||||
mListRv?.removeItemDecorationAt(0)
|
||||
mListRv?.addItemDecoration(itemDecoration)
|
||||
}
|
||||
mListViewModel.loadExceptionLiveData.observe(viewLifecycleOwner) {
|
||||
if (it != null && it.code() == 404) {
|
||||
toast("内容可能已被删除")
|
||||
}
|
||||
}
|
||||
mListRv.addOnScrollListener(mExposureListener!!)
|
||||
mListRv.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||
mListRv?.addOnScrollListener(mExposureListener!!)
|
||||
mListRv?.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
|
||||
super.onScrollStateChanged(recyclerView, newState)
|
||||
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
|
||||
|
||||
@ -191,7 +191,7 @@ class GameCollectionSquareFragment : LazyListFragment<GamesCollectionEntity, Gam
|
||||
super.initRealView()
|
||||
|
||||
mExposureListener = ExposureListener(this, mAdapter!!)
|
||||
mListRv.addOnScrollListener(mExposureListener)
|
||||
mListRv?.addOnScrollListener(mExposureListener)
|
||||
initSkeleton()
|
||||
if (!mUseAlternativeLayout) {
|
||||
initDefaultLayout()
|
||||
@ -652,7 +652,7 @@ class GameCollectionSquareFragment : LazyListFragment<GamesCollectionEntity, Gam
|
||||
if (mReuseNoData != null) mReuseNoData!!.visibility = View.VISIBLE
|
||||
if (mListLoading != null) mListLoading!!.visibility = View.GONE
|
||||
if (mDataExceptionView != null) mDataExceptionView!!.visibility = View.GONE
|
||||
mListRv.isVisible = mUseAlternativeLayout
|
||||
mListRv?.isVisible = mUseAlternativeLayout
|
||||
hideRefreshingLayout()
|
||||
if (!mUseAlternativeLayout) mDefaultBinding.tagFilterContainer.root.visibility = View.VISIBLE
|
||||
}
|
||||
@ -713,7 +713,7 @@ class GameCollectionSquareFragment : LazyListFragment<GamesCollectionEntity, Gam
|
||||
if (mListLoading != null) mListLoading!!.visibility =
|
||||
if (mListRefresh == null || !mListRefresh!!.isRefreshing) View.VISIBLE else View.GONE
|
||||
if (mReuseNoData != null) mReuseNoData!!.visibility = View.GONE
|
||||
if (mListRv != null && (!mUseAlternativeLayout || showSkeleton)) mListRv.visibility = View.GONE
|
||||
if (mListRv != null && (!mUseAlternativeLayout || showSkeleton)) mListRv?.visibility = View.GONE
|
||||
if (!mUseAlternativeLayout) mDefaultBinding.tagFilterContainer.root.visibility = View.VISIBLE
|
||||
if (mUseAlternativeLayout) {
|
||||
mAdapter?.run {
|
||||
@ -727,9 +727,9 @@ class GameCollectionSquareFragment : LazyListFragment<GamesCollectionEntity, Gam
|
||||
private fun scrollToTop() {
|
||||
val firstItemPosition = mLayoutManager.findFirstVisibleItemPosition()
|
||||
if (firstItemPosition >= 10) {
|
||||
mListRv.scrollToPosition(6)
|
||||
mListRv?.scrollToPosition(6)
|
||||
}
|
||||
mListRv.smoothScrollToPosition(0)
|
||||
mListRv?.smoothScrollToPosition(0)
|
||||
mDefaultBinding.appbar.setExpanded(true)
|
||||
}
|
||||
|
||||
|
||||
@ -70,7 +70,7 @@ class ServersCalendarListFragment :
|
||||
DirectUtils.directToServersSubscribedGameList(it.context)
|
||||
}
|
||||
|
||||
mListRv.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||
mListRv?.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
||||
super.onScrolled(recyclerView, dx, dy)
|
||||
val layoutManager = recyclerView.layoutManager
|
||||
|
||||
@ -129,7 +129,7 @@ class RatingFragment : LazyListFragment<RatingComment, RatingViewModel>(), IScro
|
||||
|
||||
val horizontalPadding = R.dimen.game_detail_item_horizontal_padding.toPx()
|
||||
mSkipGameComment = arguments?.getBoolean(EntranceConsts.KEY_SKIP_GAME_COMMENT)
|
||||
mListRv.setPadding(horizontalPadding, 0, horizontalPadding, 0)
|
||||
mListRv?.setPadding(horizontalPadding, 0, horizontalPadding, 0)
|
||||
mListRefresh?.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.transparent))
|
||||
mListRefresh?.isEnabled = mRatingType != RatingViewModel.RatingType.RATING
|
||||
mListViewModel.ratingLiveData.observe(this, Observer {
|
||||
@ -157,7 +157,7 @@ class RatingFragment : LazyListFragment<RatingComment, RatingViewModel>(), IScro
|
||||
}.build()
|
||||
foldRatingReasonTv.movementMethod = LinkMovementMethod()
|
||||
}
|
||||
mListRv.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||
mListRv?.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
|
||||
super.onScrollStateChanged(recyclerView, newState)
|
||||
if (newState == RecyclerView.SCROLL_STATE_DRAGGING) {
|
||||
@ -180,7 +180,7 @@ class RatingFragment : LazyListFragment<RatingComment, RatingViewModel>(), IScro
|
||||
val bar = view.findViewById<View>(R.id.all_comment_bar)
|
||||
if (bar != null) {
|
||||
mBaseHandler.postDelayed({
|
||||
mListRv.smoothScrollBy(0, bar.top)
|
||||
mListRv?.smoothScrollBy(0, bar.top)
|
||||
}, 500)
|
||||
}
|
||||
mSkipGameComment = false
|
||||
@ -192,7 +192,7 @@ class RatingFragment : LazyListFragment<RatingComment, RatingViewModel>(), IScro
|
||||
mReuseNoConn?.visibility = View.GONE
|
||||
mReuseNoData?.visibility = View.GONE
|
||||
mListLoading?.visibility = View.VISIBLE
|
||||
mListRv.visibility = View.GONE
|
||||
mListRv?.visibility = View.GONE
|
||||
mBaseHandler.postDelayed({ mListViewModel.initData() }, 500)
|
||||
}
|
||||
|
||||
|
||||
@ -190,7 +190,7 @@ class VideoCommentFragment : LazyListFragment<CommentItemData, VideoCommentViewM
|
||||
if (mReuseNoData != null) mReuseNoData!!.visibility = View.GONE
|
||||
if (mListLoading != null) mListLoading!!.visibility = View.GONE
|
||||
|
||||
mListRv.visibility = View.VISIBLE
|
||||
mListRv?.visibility = View.VISIBLE
|
||||
hideRefreshingLayout()
|
||||
}
|
||||
|
||||
@ -199,13 +199,13 @@ class VideoCommentFragment : LazyListFragment<CommentItemData, VideoCommentViewM
|
||||
mReuseNoData?.visibility = View.GONE
|
||||
mListLoading?.visibility = View.GONE
|
||||
|
||||
mListRv.visibility = View.VISIBLE
|
||||
mListRv?.visibility = View.VISIBLE
|
||||
hideRefreshingLayout()
|
||||
mListRv.postDelayed({
|
||||
mListRv.scrollToPosition(0)
|
||||
mListRv?.postDelayed({
|
||||
mListRv?.scrollToPosition(0)
|
||||
}, 50)
|
||||
|
||||
mListRv.postDelayed({
|
||||
mListRv?.postDelayed({
|
||||
if (provideListAdapter().itemCount < theNumberNeededToFillAScreen()) {
|
||||
autoLoadMore()
|
||||
}
|
||||
|
||||
@ -36,7 +36,7 @@ class VideoDescFragment : LazyListFragment<VideoDescItemEntity, VideoDescViewMod
|
||||
mVideoDetailViewModel = viewModelProviderFromParent()
|
||||
super.onFragmentFirstVisible()
|
||||
mListRefresh?.isEnabled = false
|
||||
mListRv.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||
mListRv?.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
|
||||
super.onScrollStateChanged(recyclerView, newState)
|
||||
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
|
||||
|
||||
@ -56,7 +56,7 @@ class GameServerTestV2ListFragment :
|
||||
}
|
||||
if (XapkUnzipStatus.FAILURE.name == downloadEntity.meta[XapkInstaller.XAPK_UNZIP_STATUS]) {
|
||||
for (position in locationList) {
|
||||
val targetView = mListRv.layoutManager?.findViewByPosition(position)
|
||||
val targetView = mListRv?.layoutManager?.findViewByPosition(position)
|
||||
if (targetView != null) {
|
||||
DialogUtils.showUnzipFailureDialog(requireContext(), downloadEntity)
|
||||
break
|
||||
@ -98,7 +98,9 @@ class GameServerTestV2ListFragment :
|
||||
override fun initRealView() {
|
||||
super.initRealView()
|
||||
mListRefresh?.isEnabled = false
|
||||
mScrollCalculatorHelper = ScrollCalculatorHelper(mListRv, R.id.autoVideoView, 0)
|
||||
mListRv?.let {
|
||||
mScrollCalculatorHelper = ScrollCalculatorHelper(it, R.id.autoVideoView, 0)
|
||||
}
|
||||
}
|
||||
|
||||
override fun initSkeletonScreen() {
|
||||
@ -116,10 +118,10 @@ class GameServerTestV2ListFragment :
|
||||
|
||||
override fun onFragmentFirstVisible() {
|
||||
super.onFragmentFirstVisible()
|
||||
mListRv.clearOnScrollListeners()
|
||||
mListRv?.clearOnScrollListeners()
|
||||
mExposureListener = ExposureListener(this, mAdapter!!)
|
||||
mListRv.addOnScrollListener(mExposureListener)
|
||||
mListRv.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||
mListRv?.addOnScrollListener(mExposureListener)
|
||||
mListRv?.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
||||
super.onScrolled(recyclerView, dx, dy)
|
||||
val layoutManager = recyclerView.layoutManager
|
||||
@ -179,8 +181,8 @@ class GameServerTestV2ListFragment :
|
||||
}
|
||||
|
||||
private fun scroll() {
|
||||
val firstVisibleItem = (mListRv.layoutManager as LinearLayoutManager).findFirstVisibleItemPosition()
|
||||
val lastVisibleItem = (mListRv.layoutManager as LinearLayoutManager).findLastVisibleItemPosition()
|
||||
val firstVisibleItem = (mListRv?.layoutManager as LinearLayoutManager).findFirstVisibleItemPosition()
|
||||
val lastVisibleItem = (mListRv?.layoutManager as LinearLayoutManager).findLastVisibleItemPosition()
|
||||
mScrollCalculatorHelper.onScroll(firstVisibleItem, lastVisibleItem)
|
||||
}
|
||||
|
||||
@ -322,7 +324,7 @@ class GameServerTestV2ListFragment :
|
||||
super.onChanged(ts)
|
||||
if (!ts.isNullOrEmpty() && mListViewModel.isLoadFirstPage) {
|
||||
scrollToTime(GameServerTestV2ViewModel.TimeFilter.TODAY.value)
|
||||
mListRv.postDelayed({
|
||||
mListRv?.postDelayed({
|
||||
scroll()
|
||||
mScrollCalculatorHelper.onScrollStateChanged(RecyclerView.SCROLL_STATE_IDLE)
|
||||
}, 200)
|
||||
@ -333,10 +335,10 @@ class GameServerTestV2ListFragment :
|
||||
val positionToScroll = mListViewModel!!.getPositionByTimeFilter(timeFilter)
|
||||
if (positionToScroll < 0) return
|
||||
mLayoutManager.scrollToPositionWithOffset(positionToScroll, 0)
|
||||
mListRv.post {
|
||||
mListRv?.post {
|
||||
mLayoutManager.scrollToPositionWithOffset(positionToScroll, 0)
|
||||
if (mListViewModel.isLoadFirstPage) {
|
||||
mListRv.post {
|
||||
mListRv?.post {
|
||||
val firstVisibleItemPosition = mLayoutManager.findFirstVisibleItemPosition()
|
||||
mBinding?.pullDownTipIv?.goneIf(firstVisibleItemPosition <= 0)
|
||||
mListViewModel.isLoadFirstPage = false
|
||||
|
||||
@ -124,7 +124,7 @@ open class SubjectListFragment : LazyListFragment<GameEntity, SubjectListViewMod
|
||||
super.initRealView()
|
||||
|
||||
// 与外部Appbar交互
|
||||
mListRv.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||
mListRv?.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
|
||||
super.onScrollStateChanged(recyclerView, newState)
|
||||
val position = mLayoutManager.findFirstCompletelyVisibleItemPosition()
|
||||
@ -135,7 +135,7 @@ open class SubjectListFragment : LazyListFragment<GameEntity, SubjectListViewMod
|
||||
})
|
||||
|
||||
mExposureListener = ExposureListener(this, mAdapter!!)
|
||||
mListRv.addOnScrollListener(mExposureListener)
|
||||
mListRv?.addOnScrollListener(mExposureListener)
|
||||
}
|
||||
|
||||
fun refreshPage(filter: String, sort: String, size: SubjectSettingEntity.Size) {
|
||||
|
||||
@ -35,7 +35,7 @@ public abstract class LazyListFragment<T, VM extends BaseListViewModel /* 该泛
|
||||
Observer<List<T>>,
|
||||
SwipeRefreshLayout.OnRefreshListener,
|
||||
OnDataObservable<T> {
|
||||
|
||||
@Nullable
|
||||
protected RecyclerView mListRv;
|
||||
@Nullable
|
||||
protected SwipeRefreshLayout mListRefresh;
|
||||
@ -136,7 +136,7 @@ public abstract class LazyListFragment<T, VM extends BaseListViewModel /* 该泛
|
||||
if (isAutomaticLoad()) mListViewModel.load(LoadType.NORMAL);
|
||||
|
||||
RecyclerView.ItemDecoration itemDecoration = getItemDecoration();
|
||||
if (itemDecoration != null) mListRv.addItemDecoration(itemDecoration);
|
||||
if (itemDecoration != null && mListRv != null) mListRv.addItemDecoration(itemDecoration);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -158,40 +158,42 @@ public abstract class LazyListFragment<T, VM extends BaseListViewModel /* 该泛
|
||||
}
|
||||
mLayoutManager = new FixLinearLayoutManager(getContext());
|
||||
((DefaultItemAnimator) mListRv.getItemAnimator()).setSupportsChangeAnimations(false);
|
||||
mListRv.setLayoutManager(mLayoutManager);
|
||||
mListRv.setAdapter(provideListAdapter());
|
||||
mListRv.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
||||
@Override
|
||||
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
|
||||
RecyclerView.LayoutManager layoutManager = mListRv.getLayoutManager();
|
||||
if (layoutManager instanceof LinearLayoutManager) {
|
||||
if (((LinearLayoutManager) layoutManager).findLastVisibleItemPosition() == provideListAdapter().getItemCount() - 1
|
||||
&& RecyclerView.SCROLL_STATE_IDLE == newState) {
|
||||
mListViewModel.load(LoadType.NORMAL);
|
||||
}
|
||||
} else if (layoutManager instanceof StaggeredGridLayoutManager) {
|
||||
int visibleItemCount = layoutManager.getChildCount();
|
||||
int totalItemCount = layoutManager.getItemCount();
|
||||
if ((visibleItemCount > 0 && newState == RecyclerView.SCROLL_STATE_IDLE && (lastVisibleItemPosition) >= totalItemCount - 1)) {
|
||||
mListViewModel.load(LoadType.NORMAL);
|
||||
if (mListRv != null) {
|
||||
mListRv.setLayoutManager(mLayoutManager);
|
||||
mListRv.setAdapter(provideListAdapter());
|
||||
mListRv.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
||||
@Override
|
||||
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
|
||||
RecyclerView.LayoutManager layoutManager = mListRv.getLayoutManager();
|
||||
if (layoutManager instanceof LinearLayoutManager) {
|
||||
if (((LinearLayoutManager) layoutManager).findLastVisibleItemPosition() == provideListAdapter().getItemCount() - 1
|
||||
&& RecyclerView.SCROLL_STATE_IDLE == newState) {
|
||||
mListViewModel.load(LoadType.NORMAL);
|
||||
}
|
||||
} else if (layoutManager instanceof StaggeredGridLayoutManager) {
|
||||
int visibleItemCount = layoutManager.getChildCount();
|
||||
int totalItemCount = layoutManager.getItemCount();
|
||||
if ((visibleItemCount > 0 && newState == RecyclerView.SCROLL_STATE_IDLE && (lastVisibleItemPosition) >= totalItemCount - 1)) {
|
||||
mListViewModel.load(LoadType.NORMAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
|
||||
super.onScrolled(recyclerView, dx, dy);
|
||||
@Override
|
||||
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
|
||||
super.onScrolled(recyclerView, dx, dy);
|
||||
|
||||
RecyclerView.LayoutManager layoutManager = mListRv.getLayoutManager();
|
||||
if (layoutManager instanceof StaggeredGridLayoutManager) {
|
||||
if (lastPositions == null) {
|
||||
lastPositions = new int[((StaggeredGridLayoutManager) layoutManager).getSpanCount()];
|
||||
RecyclerView.LayoutManager layoutManager = mListRv.getLayoutManager();
|
||||
if (layoutManager instanceof StaggeredGridLayoutManager) {
|
||||
if (lastPositions == null) {
|
||||
lastPositions = new int[((StaggeredGridLayoutManager) layoutManager).getSpanCount()];
|
||||
}
|
||||
((StaggeredGridLayoutManager) layoutManager).findLastVisibleItemPositions(lastPositions);
|
||||
lastVisibleItemPosition = NumberUtils.findMax(lastPositions);
|
||||
}
|
||||
((StaggeredGridLayoutManager) layoutManager).findLastVisibleItemPositions(lastPositions);
|
||||
lastVisibleItemPosition = NumberUtils.findMax(lastPositions);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
if (mReuseNoConn != null) mReuseNoConn.setOnClickListener(view1 -> onLoadRefresh());
|
||||
}
|
||||
|
||||
@ -254,14 +256,16 @@ public abstract class LazyListFragment<T, VM extends BaseListViewModel /* 该泛
|
||||
if (mReuseNoData != null) mReuseNoData.setVisibility(View.GONE);
|
||||
if (mListLoading != null) mListLoading.setVisibility(View.GONE);
|
||||
if (mDataExceptionView != null) mDataExceptionView.setVisibility(View.GONE);
|
||||
mListRv.setVisibility(View.VISIBLE);
|
||||
hideRefreshingLayout();
|
||||
|
||||
mListRv.postDelayed(() -> {
|
||||
if (provideListAdapter().mEntityList.size() < theNumberNeededToFillAScreen()) {
|
||||
autoLoadMore();
|
||||
}
|
||||
}, getAutoLoadMoreDelay());
|
||||
hideRefreshingLayout();
|
||||
if (mListRv != null) {
|
||||
mListRv.setVisibility(View.VISIBLE);
|
||||
mListRv.postDelayed(() -> {
|
||||
if (provideListAdapter().mEntityList.size() < theNumberNeededToFillAScreen()) {
|
||||
autoLoadMore();
|
||||
}
|
||||
}, getAutoLoadMoreDelay());
|
||||
}
|
||||
}
|
||||
|
||||
public void onLoadError() {
|
||||
@ -270,7 +274,9 @@ public abstract class LazyListFragment<T, VM extends BaseListViewModel /* 该泛
|
||||
if (mReuseNoData != null) mReuseNoData.setVisibility(View.GONE);
|
||||
if (mListLoading != null) mListLoading.setVisibility(View.GONE);
|
||||
if (mDataExceptionView != null) mDataExceptionView.setVisibility(View.GONE);
|
||||
mListRv.setVisibility(View.GONE);
|
||||
if (mListRv != null) {
|
||||
mListRv.setVisibility(View.GONE);
|
||||
}
|
||||
hideRefreshingLayout();
|
||||
}
|
||||
|
||||
@ -280,7 +286,9 @@ public abstract class LazyListFragment<T, VM extends BaseListViewModel /* 该泛
|
||||
if (mReuseNoData != null) mReuseNoData.setVisibility(View.VISIBLE);
|
||||
if (mListLoading != null) mListLoading.setVisibility(View.GONE);
|
||||
if (mDataExceptionView != null) mDataExceptionView.setVisibility(View.GONE);
|
||||
mListRv.setVisibility(View.GONE);
|
||||
if (mListRv != null) {
|
||||
mListRv.setVisibility(View.GONE);
|
||||
}
|
||||
hideRefreshingLayout();
|
||||
}
|
||||
|
||||
@ -291,8 +299,7 @@ public abstract class LazyListFragment<T, VM extends BaseListViewModel /* 该泛
|
||||
if (mReuseNoConn != null) mReuseNoConn.setVisibility(View.GONE);
|
||||
if (mReuseNoData != null) mReuseNoData.setVisibility(View.GONE);
|
||||
if (mListLoading != null) mListLoading.setVisibility(View.GONE);
|
||||
|
||||
mListRv.setVisibility(View.GONE);
|
||||
if (mListRv != null) mListRv.setVisibility(View.GONE);
|
||||
hideRefreshingLayout();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user