将列表的 skeleton 相关代码移动到基类
This commit is contained in:
@ -4,15 +4,6 @@ import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import com.gh.common.view.VerticalItemDecoration;
|
||||
import com.gh.gamecenter.R;
|
||||
import com.gh.gamecenter.normal.NormalFragment;
|
||||
import com.halo.assistant.HaloApp;
|
||||
|
||||
import java.lang.reflect.ParameterizedType;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.List;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.lifecycle.Observer;
|
||||
@ -21,6 +12,17 @@ import androidx.recyclerview.widget.DefaultItemAnimator;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||
|
||||
import com.ethanhua.skeleton.SkeletonScreen;
|
||||
import com.gh.common.view.VerticalItemDecoration;
|
||||
import com.gh.gamecenter.R;
|
||||
import com.gh.gamecenter.normal.NormalFragment;
|
||||
import com.halo.assistant.HaloApp;
|
||||
|
||||
import java.lang.reflect.ParameterizedType;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.BindView;
|
||||
import io.reactivex.Observable;
|
||||
import io.reactivex.Single;
|
||||
@ -50,6 +52,9 @@ public abstract class ListFragment<T, VM extends BaseListViewModel /* 该泛型
|
||||
|
||||
protected LinearLayoutManager mLayoutManager;
|
||||
|
||||
@Nullable
|
||||
protected SkeletonScreen mSkeletonScreen;
|
||||
|
||||
protected abstract ListAdapter provideListAdapter();
|
||||
|
||||
protected RecyclerView.ItemDecoration getItemDecoration() {
|
||||
@ -167,6 +172,7 @@ public abstract class ListFragment<T, VM extends BaseListViewModel /* 该泛型
|
||||
}
|
||||
|
||||
public void onLoadRefresh() {
|
||||
showSkeleton(true);
|
||||
mReuseNoConn.setVisibility(View.GONE);
|
||||
mReuseNoData.setVisibility(View.GONE);
|
||||
mListLoading.setVisibility(View.VISIBLE);
|
||||
@ -177,6 +183,7 @@ public abstract class ListFragment<T, VM extends BaseListViewModel /* 该泛型
|
||||
}
|
||||
|
||||
public void onLoadDone() {
|
||||
showSkeleton(false);
|
||||
mReuseNoConn.setVisibility(View.GONE);
|
||||
mReuseNoData.setVisibility(View.GONE);
|
||||
mListLoading.setVisibility(View.GONE);
|
||||
@ -191,6 +198,7 @@ public abstract class ListFragment<T, VM extends BaseListViewModel /* 该泛型
|
||||
}
|
||||
|
||||
public void onLoadError() {
|
||||
showSkeleton(false);
|
||||
mReuseNoConn.setVisibility(View.VISIBLE);
|
||||
mReuseNoData.setVisibility(View.GONE);
|
||||
mListLoading.setVisibility(View.GONE);
|
||||
@ -199,6 +207,7 @@ public abstract class ListFragment<T, VM extends BaseListViewModel /* 该泛型
|
||||
}
|
||||
|
||||
public void onLoadEmpty() {
|
||||
showSkeleton(false);
|
||||
mReuseNoConn.setVisibility(View.GONE);
|
||||
mReuseNoData.setVisibility(View.VISIBLE);
|
||||
mListLoading.setVisibility(View.GONE);
|
||||
@ -206,6 +215,16 @@ public abstract class ListFragment<T, VM extends BaseListViewModel /* 该泛型
|
||||
hideRefreshingLayout();
|
||||
}
|
||||
|
||||
protected void showSkeleton(boolean showSkeleton) {
|
||||
if (mSkeletonScreen != null) {
|
||||
if (showSkeleton) {
|
||||
mSkeletonScreen.show();
|
||||
} else {
|
||||
mSkeletonScreen.hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 需要自动加载更多的页面重载这个方法 (默认空方法)
|
||||
protected void autoLoadMore() {
|
||||
|
||||
|
||||
@ -6,7 +6,6 @@ import android.view.View
|
||||
import androidx.lifecycle.ViewModelProviders
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.ethanhua.skeleton.Skeleton
|
||||
import com.ethanhua.skeleton.ViewSkeletonScreen
|
||||
import com.gh.common.util.EntranceUtils
|
||||
import com.gh.common.view.VerticalItemDecoration
|
||||
import com.gh.gamecenter.R
|
||||
@ -21,7 +20,6 @@ class CategoryDirectoryFragment : ListFragment<CategoryEntity, CategoryDirectory
|
||||
|
||||
private lateinit var mViewModel: CategoryDirectoryListViewModel
|
||||
private lateinit var mAdapter: CategoryDirectoryAdapter
|
||||
private lateinit var mSkeleton: ViewSkeletonScreen
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
return R.layout.fragment_list_base_skeleton
|
||||
@ -40,27 +38,7 @@ class CategoryDirectoryFragment : ListFragment<CategoryEntity, CategoryDirectory
|
||||
mListRv.setBackgroundColor(Color.WHITE)
|
||||
mAdapter.recyclerView = mListRv
|
||||
mListRefresh?.isEnabled = false
|
||||
mSkeleton = Skeleton.bind(mListSkeleton).shimmer(false).load(R.layout.fragment_category_skeleton).show()
|
||||
}
|
||||
|
||||
override fun onLoadDone() {
|
||||
super.onLoadDone()
|
||||
postDelayedRunnable({ mSkeleton.hide() }, 500)
|
||||
}
|
||||
|
||||
override fun onLoadEmpty() {
|
||||
super.onLoadEmpty()
|
||||
mSkeleton.hide()
|
||||
}
|
||||
|
||||
override fun onLoadError() {
|
||||
super.onLoadError()
|
||||
mSkeleton.hide()
|
||||
}
|
||||
|
||||
override fun onRefresh() {
|
||||
mSkeleton.show()
|
||||
super.onRefresh()
|
||||
mSkeletonScreen = Skeleton.bind(mListSkeleton).shimmer(false).load(R.layout.fragment_category_skeleton).show()
|
||||
}
|
||||
|
||||
override fun provideListAdapter(): ListAdapter<*> {
|
||||
|
||||
@ -6,7 +6,6 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import butterknife.BindView
|
||||
import com.ethanhua.skeleton.Skeleton
|
||||
import com.ethanhua.skeleton.ViewSkeletonScreen
|
||||
import com.gh.common.constant.Constants
|
||||
import com.gh.common.exposure.ExposureListener
|
||||
import com.gh.common.util.EntranceUtils
|
||||
@ -47,7 +46,6 @@ class NewCategoryListFragment : ListFragment<GameEntity, NewCategoryListViewMode
|
||||
}
|
||||
}
|
||||
|
||||
private lateinit var mSkeleton: ViewSkeletonScreen
|
||||
private lateinit var mExposureListener: ExposureListener
|
||||
private lateinit var mViewModel: NewCategoryListViewModel
|
||||
|
||||
@ -92,7 +90,7 @@ class NewCategoryListFragment : ListFragment<GameEntity, NewCategoryListViewMode
|
||||
|
||||
updateCategoriesView(mSubCategoryList)
|
||||
|
||||
mSkeleton = Skeleton.bind(skeletonView).shimmer(false).load(R.layout.fragment_subject_skeleton).show()
|
||||
mSkeletonScreen = Skeleton.bind(skeletonView).shimmer(false).load(R.layout.fragment_subject_skeleton).show()
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
@ -137,21 +135,6 @@ class NewCategoryListFragment : ListFragment<GameEntity, NewCategoryListViewMode
|
||||
}
|
||||
}
|
||||
|
||||
override fun onLoadDone() {
|
||||
super.onLoadDone()
|
||||
mSkeleton.hide()
|
||||
}
|
||||
|
||||
override fun onLoadEmpty() {
|
||||
super.onLoadEmpty()
|
||||
mSkeleton.hide()
|
||||
}
|
||||
|
||||
override fun onLoadError() {
|
||||
super.onLoadError()
|
||||
mSkeleton.hide()
|
||||
}
|
||||
|
||||
override fun onLoadRefresh() {
|
||||
mBaseHandler.postDelayed({ mListViewModel.load(LoadType.REFRESH) }, 200)
|
||||
|
||||
@ -162,7 +145,6 @@ class NewCategoryListFragment : ListFragment<GameEntity, NewCategoryListViewMode
|
||||
}
|
||||
|
||||
override fun onRefresh() {
|
||||
mSkeleton.show()
|
||||
mAdapter?.clearPositionAndPackageMap()
|
||||
|
||||
super.onRefresh()
|
||||
|
||||
@ -3,7 +3,6 @@ package com.gh.gamecenter.history
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import com.ethanhua.skeleton.Skeleton
|
||||
import com.ethanhua.skeleton.ViewSkeletonScreen
|
||||
import com.gh.common.util.viewModelProvider
|
||||
import com.gh.gamecenter.R
|
||||
import com.gh.gamecenter.baselist.ListFragment
|
||||
@ -14,8 +13,6 @@ open class HistoryGameListFragment : ListFragment<GameEntity, HistoryGameListVie
|
||||
|
||||
private val mListSkeleton by bindView<View>(R.id.list_skeleton)
|
||||
|
||||
private lateinit var mSkeleton: ViewSkeletonScreen
|
||||
|
||||
private var mAdapter: HistoryGameListAdapter? = null
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
@ -36,27 +33,7 @@ open class HistoryGameListFragment : ListFragment<GameEntity, HistoryGameListVie
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
mSkeleton = Skeleton.bind(mListSkeleton).shimmer(false).load(R.layout.fragment_subject_skeleton).show()
|
||||
}
|
||||
|
||||
override fun onLoadDone() {
|
||||
super.onLoadDone()
|
||||
mSkeleton.hide()
|
||||
}
|
||||
|
||||
override fun onLoadEmpty() {
|
||||
super.onLoadEmpty()
|
||||
mSkeleton.hide()
|
||||
}
|
||||
|
||||
override fun onLoadError() {
|
||||
super.onLoadError()
|
||||
mSkeleton.hide()
|
||||
}
|
||||
|
||||
override fun onRefresh() {
|
||||
mSkeleton.show()
|
||||
super.onRefresh()
|
||||
mSkeletonScreen = Skeleton.bind(mListSkeleton).shimmer(false).load(R.layout.fragment_subject_skeleton).show()
|
||||
}
|
||||
|
||||
}
|
||||
@ -25,6 +25,8 @@ data class QuestionsDetailEntity(var id: String? = null,
|
||||
var community: CommunityEntity = CommunityEntity(),
|
||||
var isExistDrafts: Boolean = false,
|
||||
var me: MeEntity = MeEntity(),
|
||||
@SerializedName("is_smart_invite")
|
||||
var isSmartInvited: Boolean = false,
|
||||
@SerializedName("follow_count")
|
||||
private var followCount: Int = 0) : Parcelable {
|
||||
|
||||
|
||||
@ -26,7 +26,6 @@ import androidx.recyclerview.widget.DefaultItemAnimator;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.ethanhua.skeleton.Skeleton;
|
||||
import com.ethanhua.skeleton.SkeletonScreen;
|
||||
import com.gh.base.fragment.BaseDialogWrapperFragment;
|
||||
import com.gh.common.TimeElapsedHelper;
|
||||
import com.gh.common.util.CheckLoginUtils;
|
||||
@ -93,8 +92,6 @@ public class QuestionsDetailFragment
|
||||
extends ListFragment<AnswerEntity, QuestionsDetailViewModel>
|
||||
implements TagsSelectFragment.OnModeratorPatchTagsCallback {
|
||||
|
||||
public static final String TAG = "ask.questionsdetail.QuestionsDetailFragment";
|
||||
|
||||
public static final int QUESTIONS_DETAIL_ANSWER_REQUEST = 110;
|
||||
public static final int QUESTIONS_EDIT_REQUEST = 111;
|
||||
public static final int QUESTIONS_MODERATOR_HISTORY_REQUEST = 112;
|
||||
@ -116,7 +113,6 @@ public class QuestionsDetailFragment
|
||||
|
||||
private String mPath;
|
||||
private TimeElapsedHelper mElapsedHelper;
|
||||
private SkeletonScreen mSkeletonScreen;
|
||||
|
||||
public static QuestionsDetailFragment getInstance(String questionsId) {
|
||||
QuestionsDetailFragment fragment = new QuestionsDetailFragment();
|
||||
@ -282,30 +278,6 @@ public class QuestionsDetailFragment
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadDone() {
|
||||
super.onLoadDone();
|
||||
mSkeletonScreen.hide();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadError() {
|
||||
super.onLoadError();
|
||||
mSkeletonScreen.hide();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadRefresh() {
|
||||
super.onLoadRefresh();
|
||||
mSkeletonScreen.show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadEmpty() {
|
||||
super.onLoadEmpty();
|
||||
mSkeletonScreen.hide();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<List<AnswerEntity>> provideDataObservable(int page) {
|
||||
return RetrofitManager.getInstance(getContext()).getApi()
|
||||
|
||||
@ -5,7 +5,6 @@ import android.view.View
|
||||
import androidx.lifecycle.ViewModelProviders
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.ethanhua.skeleton.Skeleton
|
||||
import com.ethanhua.skeleton.ViewSkeletonScreen
|
||||
import com.gh.common.exposure.ExposureListener
|
||||
import com.gh.common.util.EntranceUtils
|
||||
import com.gh.download.DownloadManager
|
||||
@ -24,8 +23,6 @@ import org.greenrobot.eventbus.ThreadMode
|
||||
|
||||
class SubjectListFragment : ListFragment<GameEntity, SubjectListViewModel>(), OnTitleClickListener {
|
||||
|
||||
private lateinit var mSkeleton: ViewSkeletonScreen
|
||||
|
||||
private lateinit var mExposureListener: ExposureListener
|
||||
|
||||
private var mAdapter: SubjectAdapter? = null
|
||||
@ -57,7 +54,7 @@ class SubjectListFragment : ListFragment<GameEntity, SubjectListViewModel>(), On
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
mSkeleton = Skeleton
|
||||
mSkeletonScreen = Skeleton
|
||||
.bind(mCachedView.findViewById<View>(R.id.list_skeleton))
|
||||
.shimmer(false)
|
||||
.load(R.layout.fragment_subject_skeleton).show()
|
||||
@ -108,26 +105,6 @@ class SubjectListFragment : ListFragment<GameEntity, SubjectListViewModel>(), On
|
||||
DownloadManager.getInstance(context).removeObserver(dataWatcher)
|
||||
}
|
||||
|
||||
override fun onLoadDone() {
|
||||
super.onLoadDone()
|
||||
mSkeleton.hide()
|
||||
}
|
||||
|
||||
override fun onLoadEmpty() {
|
||||
super.onLoadEmpty()
|
||||
mSkeleton.hide()
|
||||
}
|
||||
|
||||
override fun onLoadError() {
|
||||
super.onLoadError()
|
||||
mSkeleton.hide()
|
||||
}
|
||||
|
||||
override fun onRefresh() {
|
||||
mSkeleton.show()
|
||||
super.onRefresh()
|
||||
}
|
||||
|
||||
// 下载被删除事件
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onEventMainThread(status: EBDownloadStatus) {
|
||||
|
||||
@ -6,7 +6,6 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import butterknife.BindView
|
||||
import com.ethanhua.skeleton.Skeleton
|
||||
import com.ethanhua.skeleton.ViewSkeletonScreen
|
||||
import com.gh.common.util.observeNonNull
|
||||
import com.gh.common.util.viewModelProvider
|
||||
import com.gh.common.view.ConfigFilterView
|
||||
@ -42,7 +41,6 @@ class TagsListFragment : ListFragment<GameEntity, TagsListViewModel>() {
|
||||
}
|
||||
}
|
||||
|
||||
private lateinit var mSkeleton: ViewSkeletonScreen
|
||||
private lateinit var mViewModel: TagsListViewModel
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
@ -83,7 +81,7 @@ class TagsListFragment : ListFragment<GameEntity, TagsListViewModel>() {
|
||||
}
|
||||
})
|
||||
|
||||
mSkeleton = Skeleton.bind(skeletonView).shimmer(false).load(R.layout.fragment_subject_skeleton).show()
|
||||
mSkeletonScreen = Skeleton.bind(skeletonView).shimmer(false).load(R.layout.fragment_subject_skeleton).show()
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
@ -122,21 +120,6 @@ class TagsListFragment : ListFragment<GameEntity, TagsListViewModel>() {
|
||||
}
|
||||
}
|
||||
|
||||
override fun onLoadDone() {
|
||||
super.onLoadDone()
|
||||
mSkeleton.hide()
|
||||
}
|
||||
|
||||
override fun onLoadEmpty() {
|
||||
super.onLoadEmpty()
|
||||
mSkeleton.hide()
|
||||
}
|
||||
|
||||
override fun onLoadError() {
|
||||
super.onLoadError()
|
||||
mSkeleton.hide()
|
||||
}
|
||||
|
||||
override fun onLoadRefresh() {
|
||||
if (mReuseNoConn.visibility == View.VISIBLE
|
||||
&& (tagsRecyclerView.adapter == null || tagsRecyclerView.adapter?.itemCount == 0)) {
|
||||
@ -152,7 +135,6 @@ class TagsListFragment : ListFragment<GameEntity, TagsListViewModel>() {
|
||||
}
|
||||
|
||||
override fun onRefresh() {
|
||||
mSkeleton.show()
|
||||
mAdapter?.clearPositionAndPackageMap()
|
||||
super.onRefresh()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user