diff --git a/app/src/main/java/com/gh/common/databind/BindingAdapters.java b/app/src/main/java/com/gh/common/databind/BindingAdapters.java index 0d90130fc8..9444df4185 100644 --- a/app/src/main/java/com/gh/common/databind/BindingAdapters.java +++ b/app/src/main/java/com/gh/common/databind/BindingAdapters.java @@ -503,9 +503,7 @@ public class BindingAdapters { @BindingAdapter("isRefreshing") public static void isRefreshing(SwipeRefreshLayout layout, LoadStatus status) { - if (status == LoadStatus.INIT_LOADING) { - layout.setRefreshing(true); - } else { + if (status != LoadStatus.INIT_LOADING && status != LoadStatus.LIST_LOADING) { layout.setRefreshing(false); } } diff --git a/app/src/main/java/com/gh/gamecenter/home/HomeFragmentAdapter.kt b/app/src/main/java/com/gh/gamecenter/home/HomeFragmentAdapter.kt index d72c016d67..620f9d4d0a 100644 --- a/app/src/main/java/com/gh/gamecenter/home/HomeFragmentAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/home/HomeFragmentAdapter.kt @@ -36,6 +36,12 @@ class HomeFragmentAdapter(context: Context, private var mLoadStatus: LoadStatus? = null private val mLegacyHomeFragmentAdapterAssistant by lazy { LegacyHomeFragmentAdapterAssistant(mContext, this, mLayoutInflater) } + + override fun areContentsTheSame(oldItem: HomeItemData, newItem: HomeItemData): Boolean { + if (oldItem.slides != null && newItem.slides != null) return false + if (oldItem.recommends != null && newItem.recommends != null) return false + return super.areContentsTheSame(oldItem, newItem) + } fun setLoadStatus(status: LoadStatus) { this.mLoadStatus = status notifyItemChanged(itemCount - 1) diff --git a/app/src/main/java/com/gh/gamecenter/home/HomeViewModel.kt b/app/src/main/java/com/gh/gamecenter/home/HomeViewModel.kt index 791c1e508a..0301dbcd3c 100644 --- a/app/src/main/java/com/gh/gamecenter/home/HomeViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/home/HomeViewModel.kt @@ -130,7 +130,6 @@ class HomeViewModel(application: Application) : AndroidViewModel(application) { .subscribe(object : BiResponse>() { override fun onSuccess(data: List) { mHomeRecommends.addAll(data) - transformationItemData() getHomeContent(true) } @@ -156,29 +155,27 @@ class HomeViewModel(application: Application) : AndroidViewModel(application) { .observeOn(AndroidSchedulers.mainThread()) .subscribe(object : BiResponse>() { override fun onSuccess(data: List) { - if (data.isEmpty()) { - loadStatus.postValue(LoadStatus.LIST_OVER) - } else { - mHomeContents.addAll(data) - transformationItemData() - if (initData) { - loadStatus.postValue(LoadStatus.INIT_LOADED) - } else { - loadStatus.postValue(LoadStatus.LIST_LOADED) - } - } - + mHomeContents.addAll(data) + transformationItemData() mContentPage++ mIsLoading = false + + when { + data.isEmpty() -> loadStatus.postValue(LoadStatus.LIST_OVER) + initData -> loadStatus.postValue(LoadStatus.INIT_LOADED) + else -> loadStatus.postValue(LoadStatus.LIST_LOADED) + } } override fun onFailure(exception: Exception) { + transformationItemData() + mIsLoading = false + if (initData && mHomeSlides.isEmpty() && mHomeRecommends.isEmpty()) { loadStatus.postValue(LoadStatus.INIT_FAILED) } else { loadStatus.postValue(LoadStatus.LIST_FAILED) } - mIsLoading = false } }) } diff --git a/app/src/main/java/com/gh/gamecenter/home/slide/HomeSlideListItemViewHolder.kt b/app/src/main/java/com/gh/gamecenter/home/slide/HomeSlideListItemViewHolder.kt index d38038bb6e..40240c2069 100644 --- a/app/src/main/java/com/gh/gamecenter/home/slide/HomeSlideListItemViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/home/slide/HomeSlideListItemViewHolder.kt @@ -24,6 +24,7 @@ class HomeSlideListItemViewHolder(val binding: HomeSlideListItemBinding) : BaseR val linkGame = homeSlide.linkGame ?: return val homeTags = homeSlide.linkGame.homeSetting.tags if (homeTags.isNotEmpty()) binding.data?.linkGame?.tagStyle = homeTags + if (homeSlide.text.isNotEmpty()) binding.data?.linkGame?.name = homeSlide.text if (linkGame.commentCount < 10 || linkGame.star < 7.0) { binding.ratingBackground.setImageResource(R.drawable.home_visit_background) binding.ratingScore.setTextColor(R.color.theme.toColor()) diff --git a/app/src/main/res/layout/game_attach_item.xml b/app/src/main/res/layout/game_attach_item.xml index 060632618a..57ca2146cb 100644 --- a/app/src/main/res/layout/game_attach_item.xml +++ b/app/src/main/res/layout/game_attach_item.xml @@ -61,6 +61,7 @@ android:layout_height="wrap_content" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:singleLine="true" android:text="@{game.name}" android:textColor="@color/text_333333" android:textSize="16sp" @@ -91,15 +92,15 @@ diff --git a/app/src/main/res/layout/home_slide_list_item.xml b/app/src/main/res/layout/home_slide_list_item.xml index 635dd54340..4b2afec6a7 100644 --- a/app/src/main/res/layout/home_slide_list_item.xml +++ b/app/src/main/res/layout/home_slide_list_item.xml @@ -92,7 +92,7 @@ + tools:text="新中国成立70年来 从11.3亿美元到4.6万亿美元" + tools:visibility="gone" />