package com.example.himalayaproject.views;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.example.himalayaproject.R;
import com.example.himalayaproject.base.BaseApplication;
import com.example.himalayaproject.utils.LogUtil;
/**
 * @author wangyong
 * @date 12/3/20 11:46 AM
 */
public abstract class UILoader extends FrameLayout {
    private static final String TAG = "UILoader";
    private View mLoadingView;
    private View mSuccessView;
    private View mNetworkErrorView;
    private View mEmptyView;
    public enum UIStatus {
        LOADING, SUCCESS, NETWORK_ERROR, EMPTY, NONE
    }
    public UIStatus mCurrentStatus = UIStatus.NONE;
    public UILoader(@NonNull Context context) {
        this(context, null);
    }
    public UILoader(@NonNull Context context, @Nullable AttributeSet attrs) {
        this(context, attrs, 0);
    }
    public UILoader(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        //
        init();
    }
    public void updateStatus(UIStatus status) {
        //UILoader.UIStatus.LOADING
        LogUtil.d(TAG, "status-->" + status);
        mCurrentStatus = status;
        //更新UI一定要在主线程上
        BaseApplication.getHandler().post(new Runnable() {
            @Override
            public void run() {
                switchUIByCurrentStatus();
            }
        });
    }
    /**
     * 初始化UI
     */
    private void init() {
        switchUIByCurrentStatus();
    }
    private void switchUIByCurrentStatus() {
        //加载中
        if (mLoadingView == null) {
            LogUtil.d(TAG,"加载中");
            mLoadingView = getLoadingView();
            addView(mLoadingView);
            LogUtil.d(TAG,"加载完成");
        }
        //根据状态设置是否可见
        mLoadingView.setVisibility(mCurrentStatus == UIStatus.LOADING ? VISIBLE : GONE);
        //加载成功
        if (mSuccessView == null) {
            mSuccessView = getSuccessView(this);
            LogUtil.d(TAG,"加载成功");
            addView(mSuccessView);
        }
        //根据状态设置是否可见
        mSuccessView.setVisibility(mCurrentStatus == UIStatus.SUCCESS ? VISIBLE : GONE);
        //网络错误页面
        if (mNetworkErrorView == null) {
            mNetworkErrorView = getNetworkErrorView();
            addView(mNetworkErrorView);
            LogUtil.d(TAG,"网络错误--");
        }
        //根据状态设置是否可见
        mNetworkErrorView.setVisibility(mCurrentStatus == UIStatus.NETWORK_ERROR ? VISIBLE : GONE);
        //数据为空的页面
        if (mEmptyView== null) {
            mEmptyView = getEmptyView();
            addView(mEmptyView);
            LogUtil.d(TAG,"数据为空");
        }
        //根据状态设置是否可见
        mEmptyView.setVisibility(mCurrentStatus == UIStatus.EMPTY ? VISIBLE : GONE);
    }
    private View getEmptyView() {
        return LayoutInflater.from(getContext()).inflate(R.layout.fragment_empty_view, this, false);
    }
    private View getNetworkErrorView(){
        return LayoutInflater.from(getContext()).inflate(R.layout.fragment_error_view, this, false);
    }
    protected abstract View getSuccessView(ViewGroup container);
    protected View getLoadingView() {
        LogUtil.d(TAG,"获取loading 页面");
        return LayoutInflater.from(getContext()).inflate(R.layout.fragment_loading_view, this, false);
    }
}
RecommendFragment类
Recommendfragment something
@Override
protected View onSubViewLoaded(LayoutInflater layoutInflater, ViewGroup container) {
    if (mRootView == null) {
        mUiLoader = new UILoader(getContext()) {
            @Override
            protected View getSuccessView(ViewGroup container) {
                LogUtil.d(TAG,"getSuccessView 执行了");
                return createSuccessView(layoutInflater,container);
            }
        };
    }
private View createSuccessView(LayoutInflater layoutInflater, ViewGroup container) {
    mRootView = layoutInflater.inflate(R.layout.fragment_recommend, container, false);
    LogUtil.d(TAG, "" + mRootView);
    //RecycleView的使用
    //1. 第一步找到相应的控件
    mRecyclerView = mRootView.findViewById(R.id.recommend_list);
    //2. 设置布局管理器
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
    mRecyclerView.setLayoutManager(linearLayoutManager);
    //设置垂直方向
    linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    mRecyclerView.setLayoutManager(linearLayoutManager);
    mRecyclerView.addItemDecoration(new RecyclerView.ItemDecoration() {
        @Override
        public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
            outRect.top = UIUtil.dip2px(view.getContext(), 5);
            outRect.bottom = UIUtil.dip2px(view.getContext(), 5);
            outRect.left = UIUtil.dip2px(view.getContext(), 5);
            outRect.right = UIUtil.dip2px(view.getContext(), 5);
        }
    });
    return mRootView;
}
getRecommendList()方法:
@Override
public void getRecommendList() {
    //获取数据之前先加载
    updateLoading();
    //封装参数  获取推荐内容
    Map<String, String> map = new HashMap<>();
    //这个参数表示一页数据返回多少条
    map.put(DTransferConstants.LIKE_COUNT, String.valueOf(RECOMMEND_CONT));
    CommonRequest.getGuessLikeAlbum(map, new IDataCallBack<GussLikeAlbumList>() {
        @Override
        public void onSuccess(GussLikeAlbumList gussLikeAlbumList) {
            LogUtil.d(TAG, "thread name - > " + Thread.currentThread().getName());
            //数据获取成功
            if (gussLikeAlbumList != null) {
                List<Album> albumList = gussLikeAlbumList.getAlbumList();
                //拿到集合数据以后更新UI
                //upRecommendUI(albumList);
                handlerRecommendResult(albumList);
                LogUtil.d(TAG, "List Size : " + albumList.size());
                for (int i = 0; i < albumList.size(); i++) {
                    LogUtil.d(TAG, "猜你喜欢 : " + albumList.get(i).getAlbumTitle());
                }
            }
        }
Log:  RecommendFragment|UILoader
2020-12-05 18:43:52.852 31623-31623/com.example.himalayaproject D/[com.example.himalayaproject]UILoader: 加载中
2020-12-05 18:43:52.852 31623-31623/com.example.himalayaproject D/[com.example.himalayaproject]UILoader: 获取loading 页面
2020-12-05 18:43:52.855 31623-31623/com.example.himalayaproject D/[com.example.himalayaproject]UILoader: 加载完成
2020-12-05 18:43:52.855 31623-31623/com.example.himalayaproject D/[com.example.himalayaproject]RecommendFragment: getSuccessView 执行了
2020-12-05 18:43:52.861 31623-31623/com.example.himalayaproject D/[com.example.himalayaproject]RecommendFragment: android.widget.RelativeLayout{654ddb0 V.E...... ......I. 0,0-0,0}
2020-12-05 18:43:52.862 31623-31623/com.example.himalayaproject D/[com.example.himalayaproject]UILoader: 加载成功
2020-12-05 18:43:52.865 31623-31623/com.example.himalayaproject D/[com.example.himalayaproject]UILoader: 网络错误--
2020-12-05 18:43:52.868 31623-31623/com.example.himalayaproject D/[com.example.himalayaproject]UILoader: 数据为空
2020-12-05 18:43:52.869 31623-31623/com.example.himalayaproject D/[com.example.himalayaproject]RecommendFragment: onLoading
2020-12-05 18:43:52.869 31623-31623/com.example.himalayaproject D/[com.example.himalayaproject]UILoader: status-->LOADING
2020-12-05 18:43:53.474 31623-31623/com.example.himalayaproject D/[com.example.himalayaproject]UILoader: status-->SUCCESS
从你的log上来看,很奇怪。流程状态也不对呀。
另外则在毫秒界别上就完成了。可能快到你看不到。
那不是走到了嘛,那你的LoadingView上有啥?也就是你的布局上有啥?其他界面正常 吗?