Prechádzať zdrojové kódy

修复游戏中心刷新列表卡顿问题

zengjiebin 7 rokov pred
rodič
commit
251b62e945

+ 6 - 1
app/src/main/java/com/sheep/gamegroup/util/RefreshUtil.java

@@ -26,6 +26,12 @@ public class RefreshUtil {
      */
     public void initRefresh(){
         ClassicsFooter.REFRESH_FOOTER_LOADING = "羊羊努力加载中...";//"正在加载...";
+        ClassicsFooter.REFRESH_FOOTER_PULLING = "上拉加载更多";
+        ClassicsFooter.REFRESH_FOOTER_RELEASE = "释放立即加载";
+        ClassicsFooter.REFRESH_FOOTER_REFRESHING = "正在加载...";
+        ClassicsFooter.REFRESH_FOOTER_FINISH = "加载完成";
+        ClassicsFooter.REFRESH_FOOTER_FAILED = "加载失败";
+        ClassicsFooter.REFRESH_FOOTER_NOTHING = "全部加载完成";
     }
 
     /**
@@ -41,6 +47,5 @@ public class RefreshUtil {
         //设置 Footer 为 球脉冲 样式
         refreshLayout.setRefreshFooter(new ClassicsFooter(context).setDrawableSize(20));
         refreshLayout.setEnableAutoLoadMore(true);
-        refreshLayout.setEnableLoadMore(true);
     }
 }

+ 266 - 0
app/src/main/java/com/sheep/gamegroup/view/fragment/BaseListFragment3.java

@@ -0,0 +1,266 @@
+package com.sheep.gamegroup.view.fragment;
+
+import android.app.Activity;
+import android.support.v4.view.ViewPager;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.scwang.smartrefresh.layout.SmartRefreshLayout;
+import com.sheep.gamegroup.model.api.ApiService;
+import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.DataUtil;
+import com.sheep.gamegroup.util.ListUtil;
+import com.sheep.gamegroup.util.SysAppUtil;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.base.BaseFragment;
+import com.sheep.jiuyan.samllsheep.utils.G;
+
+import java.util.List;
+
+import butterknife.BindView;
+import rx.Observable;
+import rx.android.schedulers.AndroidSchedulers;
+import rx.functions.Action1;
+import rx.schedulers.Schedulers;
+/**
+ * Created by realicing on 2018/10/9.
+ * realicing@sina.com
+ * 使用普通的RecyclerView来显示列表,可配合SmartRefreshLayout和ViewPager使用(setSmartRefreshLayout和setViewPager)
+ */
+public abstract class BaseListFragment3<T> extends BaseFragment {
+    @Override
+    public int getLayoutId() {
+        return R.layout.net_empty_rv;
+    }
+
+    protected Activity activity;
+    @Override
+    public void onViewCreated() {
+        activity = getActivity();
+        initView();
+        initListener();
+        switch (refreshDataType()) {
+            case REFRESH_ON_CREATE:
+                refreshData();
+            case REFRESH_ON_RESUME:
+                break;
+            case REFRESH_ON_YOURSELF:
+            default:
+                notifyDataSetChanged();
+                break;
+        }
+    }
+    @BindView(R.id.title)
+    protected View title;
+    @BindView(R.id.empty_view)
+    protected View empty_view;
+    @BindView(R.id.check_net_ll)
+    protected View check_net_ll;
+    @BindView(R.id.view_list)
+    protected RecyclerView view_list;
+
+    protected BaseMessage lastMessage;//最后一个网络获取的结果
+    protected int page = 1;//页数
+    protected int per_page = DataUtil.PER_PAGE;
+
+    public void initView() {
+        title.setVisibility(View.GONE);
+    }
+    public void initListener() {
+        view_list.setLayoutManager(new LinearLayoutManager(SheepApp.getInstance()));
+        view_list.setAdapter(getAdapter());
+    }
+    //加载更多数据
+    protected void loadMoreData() {
+        if(ListUtil.size(list) >= per_page*page){
+            page += 1;
+            initData();
+        }else {
+            setNoMore(true);
+        }
+    }
+
+    //设置是否还有更多数据
+    public void setNoMore(boolean noMore) {
+        this.noMore = noMore;
+        if(smartRefreshLayout != null && getUserVisibleHint()) {
+            smartRefreshLayout.setNoMoreData(noMore);
+        }
+    }
+    //加载完成时更新header或footer
+    protected void refreshOrLoadMoreComplete() {
+        if(smartRefreshLayout != null && getUserVisibleHint()) {
+            if (page == 1) {
+                smartRefreshLayout.finishRefresh();
+            } else {
+                smartRefreshLayout.finishLoadMore();
+            }
+        }
+
+    }
+    protected List<T> list = ListUtil.emptyList();
+    protected List<T> lastCacheList = ListUtil.emptyList();
+    //默认先获取缓存
+    protected boolean isFirstGetACache(){
+        return true;
+    }
+    //加载数据
+    public void initData() {
+        final String urlKey = getKey(page, per_page);
+        if(isFirstGetACache()) {
+            //先尝试获取缓存数据
+            lastCacheList = DataUtil.getInstance().getCacheList(urlKey, getTClass());
+            loadList(lastCacheList);
+        }
+        SysAppUtil.checkNet(new Action1<Integer>() {
+            @Override
+            public void call(Integer result) {
+                if(result != 0){//无网络
+                    if(check_net_ll != null)
+                        check_net_ll.setVisibility(View.VISIBLE);
+                } else {
+                    if(check_net_ll != null)
+                        check_net_ll.setVisibility(View.GONE);
+                }
+            }
+        });
+        getApi(SheepApp.getInstance().getNetComponent().getApiService())
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        lastMessage = baseMessage;
+                        boolean isNewData = DataUtil.getInstance().isNewData(urlKey);
+                        if(isNewData || !isFirstGetACache()) {
+                            if(isFirstGetACache())
+                                ListUtil.removeAll(list, lastCacheList);
+                            List<T> newList = baseMessage.getDatas(getTClass());
+                            loadList(newList);
+                        }else {
+                            notifyDataSetChanged();
+                        }
+                    }
+
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        notifyDataSetChanged();
+                    }
+                });
+    }
+
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        if(refreshDataType() == REFRESH_ON_RESUME){
+            refreshData();
+        }
+    }
+    public static final int REFRESH_ON_CREATE = 0;
+    public static final int REFRESH_ON_RESUME = 1;
+    public static final int REFRESH_ON_YOURSELF = -1;
+    /**
+     * 在哪里初始化数据:0 onViewCreated后, 1 onResume后, -1 不初始化
+     * @return
+     */
+    public int refreshDataType() {
+        return REFRESH_ON_CREATE;
+    }
+    public void clear(){
+        lastMessage = null;
+        setNoMore(false);
+        empty_view.setVisibility(View.INVISIBLE);
+        list.clear();
+        page = 1;
+    }
+    //通过刷新来重新加载数据
+    public void refreshData(){
+        clear();
+        view_list.getAdapter().notifyDataSetChanged();
+        initData();
+    }
+    protected List<T> newList;
+
+    protected void loadList(List<T> addList){
+        ListUtil.addAllItem(list, addList);
+        newList = addList;
+        notifyDataSetChanged();
+    }
+    //刷新数据
+    public void notifyDataSetChanged(){
+        if(view_list == null || empty_view == null){
+            return;
+        }
+        updateEmptyView();
+        view_list.getAdapter().notifyDataSetChanged();
+        refreshOrLoadMoreComplete();
+        resetViewPagerHeight();
+    }
+    //重新设置ViewPager的高度
+    protected void resetViewPagerHeight() {
+        if(viewPager != null && getUserVisibleHint()){
+            int count = ListUtil.size(list);
+            ViewGroup.LayoutParams params = viewPager.getLayoutParams();
+            params.height = count == 0 ? G.HEIGHT / 2 : (count * getItemHeight());
+            viewPager.setLayoutParams(params);
+        }
+    }
+
+    @Override
+    public void setUserVisibleHint(boolean isVisibleToUser) {
+        super.setUserVisibleHint(isVisibleToUser);
+        resetViewPagerHeight();
+        if(smartRefreshLayout != null && getUserVisibleHint()) {
+            smartRefreshLayout.setNoMoreData(noMore);
+        }
+    }
+    protected abstract int getItemHeight();
+
+    //是否显示无数据占位图
+    protected void updateEmptyView(){
+        CommonUtil.getInstance().updateEmptyView(empty_view, list.isEmpty());
+    }
+
+    @Override
+    public void onDestroyView() {
+        super.onDestroyView();
+        view_list = null;
+        viewPager = null;
+        smartRefreshLayout = null;
+    }
+
+    protected boolean noMore = false;
+    public boolean isNoMore() {
+        return noMore;
+    }
+    protected abstract RecyclerView.Adapter getAdapter();
+    protected abstract String getKey(int page, int per_page);
+    protected abstract Observable<BaseMessage> getApi(ApiService apiService);
+    protected abstract Class<T> getTClass();
+
+
+    protected ViewPager viewPager;
+    protected SmartRefreshLayout smartRefreshLayout;
+
+    public ViewPager getViewPager() {
+        return viewPager;
+    }
+
+    public void setViewPager(ViewPager viewPager) {
+        this.viewPager = viewPager;
+    }
+
+    public SmartRefreshLayout getSmartRefreshLayout() {
+        return smartRefreshLayout;
+    }
+
+    public void setSmartRefreshLayout(SmartRefreshLayout smartRefreshLayout) {
+        this.smartRefreshLayout = smartRefreshLayout;
+    }
+}

+ 26 - 97
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtPlayGame.java

@@ -2,24 +2,22 @@ package com.sheep.gamegroup.view.fragment;
 
 import android.app.Activity;
 import android.content.Context;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
+import android.support.annotation.NonNull;
 import android.support.design.widget.TabLayout;
 import android.support.v4.view.ViewPager;
 import android.support.v4.widget.NestedScrollView;
-import android.support.v4.widget.SwipeRefreshLayout;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.view.View;
-import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.request.RequestOptions;
-import com.sheep.gamegroup.event.BigEvent;
+import com.scwang.smartrefresh.layout.SmartRefreshLayout;
+import com.scwang.smartrefresh.layout.api.RefreshLayout;
+import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.FindTag;
 import com.sheep.gamegroup.model.entity.GameEntity;
@@ -30,6 +28,7 @@ import com.sheep.gamegroup.util.DataUtil;
 import com.sheep.gamegroup.util.GlideImageLoader;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.ListUtil;
+import com.sheep.gamegroup.util.RefreshUtil;
 import com.sheep.gamegroup.util.ViewHolder;
 import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.gamegroup.view.adapter.AdbCommonRecycler;
@@ -44,8 +43,6 @@ import com.youth.banner.listener.OnBannerListener;
 import com.youth.banner.loader.ImageLoader;
 
 import org.afinal.simplecache.ApiKey;
-import org.greenrobot.eventbus.EventBus;
-import org.greenrobot.eventbus.Subscribe;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -82,16 +79,11 @@ public class FgtPlayGame extends BaseFragment {
     @BindView(R.id.viewpager_act_game_details)
     ViewPager pager;
     @BindView(R.id.refresh)
-    SwipeRefreshLayout refresh;
+    SmartRefreshLayout refresh;
     @BindView(R.id.scrollView)
     NestedScrollView scrollView;
-    @BindView(R.id.bottom_line_text)
-    TextView bottom_line_text;
     Unbinder unbinder;
 
-    public static final int WHAT_UPDATE_VP_HEIGHT = 1;//刷新viewpager高度
-    public static final int WHAT_UPDATE_BOTTOM_LINE = 3;//刷新底线(双击我回到顶部)
-    public static final int WHAT_UPDATE_FOOT_VIEW_CALL_BACK = 4;//刷新发布任务列表的加载更多的状态回调
     private Activity activity;
     private List<GameEntity> everyDayPlayListData = new ArrayList<>();
     private List<GameEntity> hotListData = new ArrayList<>();
@@ -103,48 +95,6 @@ public class FgtPlayGame extends BaseFragment {
     private TitleFragmentListAdapter mAdapter;
     private int curPosition = 0;
 
-    Handler mHandler = new Handler(Looper.getMainLooper()){
-        @Override
-        public void handleMessage(Message msg) {
-            super.handleMessage(msg);
-            FgtPlayGameSon item;
-            switch (msg.what) {
-                case WHAT_UPDATE_VP_HEIGHT:
-                    item = (FgtPlayGameSon) mAdapter.getItem(curPosition);
-                    if (pager == null || item == null) {
-                        return;
-                    }
-                    int count = item.getDataCount();
-                    item.setNoFresh();
-                    ViewGroup.LayoutParams params = pager.getLayoutParams();
-                    params.height = count == 0 ? G.HEIGHT / 2 : (count * getResources().getDimensionPixelSize(R.dimen.content_padding_96) + getResources().getDimensionPixelSize(R.dimen.frg_app_details_icon));
-                    pager.setLayoutParams(params);
-                case WHAT_UPDATE_FOOT_VIEW_CALL_BACK://发布任务列表的加载更多的回调
-                    if(msg.obj instanceof String) {
-                        String obj = (String) msg.obj;
-                        switch (obj) {
-                            case "onLoadingMore":
-                                bottom_line_text.setText("羊羊努力加载中...");
-                                break;
-                            case "onLoadMoreComplete":
-                                bottom_line_text.setText("上拉下载更多,双击我回到顶部");
-                                break;
-                            case "onSetNoMore":
-                                break;
-                        }
-                    }
-                    break;
-                case WHAT_UPDATE_BOTTOM_LINE://刷新底线
-                    item = (FgtPlayGameSon) mAdapter.getItem(curPosition);
-                    if (mAdapter == null || item == null) {
-                        return;
-                    }
-                    bottom_line_text.setText(item.isNoMore() ?"我是有底线的,双击我回到顶部" : "双击我回到顶部");
-                    break;
-            }
-        }
-    };
-
     @Override
     public int getLayoutId() {
         return R.layout.fgt_play_game;
@@ -153,7 +103,6 @@ public class FgtPlayGame extends BaseFragment {
     @Override
     public void onViewCreated() {
         activity = getActivity();
-        EventBus.getDefault().register(this);
 
         //banner
         LinearLayout.LayoutParams bannerLayoutParams = (LinearLayout.LayoutParams) banner.getLayoutParams();
@@ -211,12 +160,24 @@ public class FgtPlayGame extends BaseFragment {
                 }
             }
         });
-        refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+        refresh.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {
+            @Override
+            public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
+                FgtPlayGameSon item = (FgtPlayGameSon) mAdapter.getItem(curPosition);
+                if (item == null) {
+                    notifyDataSetChanged();
+                    return;
+                }
+                item.loadMoreData();
+                notifyDataSetChanged();
+            }
+
             @Override
-            public void onRefresh() {
+            public void onRefresh(@NonNull RefreshLayout refreshLayout) {
                 initData();
             }
         });
+        RefreshUtil.newInstance().publicParameterRefresh(refresh, activity);
 
         mAdapter = new TitleFragmentListAdapter(getChildFragmentManager());
 
@@ -364,7 +325,8 @@ public class FgtPlayGame extends BaseFragment {
                 });
     }
     private void notifyDataSetChanged() {
-        refresh.setRefreshing(false);
+        refresh.finishRefresh();
+        refresh.finishLoadMore();
     }
 
     /**
@@ -383,7 +345,8 @@ public class FgtPlayGame extends BaseFragment {
             int i = 0;
             for(FindTag findTag:list){
                 FgtPlayGameSon item = FgtPlayGameSon.newInstance(findTag.getId());
-                item.setSelected(i == 0);//默认选中第一个
+                item.setViewPager(pager);
+                item.setSmartRefreshLayout(refresh);
                 mAdapter.add(item, findTag.getName());
                 i++;
             }
@@ -397,13 +360,7 @@ public class FgtPlayGame extends BaseFragment {
 
                 @Override
                 public void onPageSelected(int i) {
-//                    FIND_TAG.onEvent("find_tag_name", ListUtil.hasIndex(list, i - 1) );
-                    FgtPlayGameSon lastItem = (FgtPlayGameSon) mAdapter.getItem(curPosition);
                     curPosition = i;
-                    FgtPlayGameSon item = (FgtPlayGameSon) mAdapter.getItem(curPosition);
-                    lastItem.setSelected(false);
-                    item.setSelected(true);
-                    mHandler.sendEmptyMessage(WHAT_UPDATE_VP_HEIGHT);//重新计算viewpager高度
                 }
 
                 @Override
@@ -412,12 +369,12 @@ public class FgtPlayGame extends BaseFragment {
                 }
             });
             CommonUtil.getInstance().reflex(indicator, activity);
-//            pager.setOffscreenPageLimit(mAdapter.getCount());
+            pager.setOffscreenPageLimit(list.size());
             notifyDataSetChanged();
         }
     }
 
-    @OnClick({R.id.every_day_more_tv, R.id.recent_hot_more_tv, R.id.bottom_line})
+    @OnClick({R.id.every_day_more_tv, R.id.recent_hot_more_tv})
     public void onViewClicked(View view) {
         switch (view.getId()) {
             case R.id.every_day_more_tv:
@@ -426,34 +383,6 @@ public class FgtPlayGame extends BaseFragment {
             case R.id.recent_hot_more_tv:
                 Jump2View.getInstance().goEverydayOrCurrentHotGame(activity, 1);
                 break;
-            case R.id.bottom_line://我是有底线的,双击我回到顶部
-                scrollView.fullScroll(NestedScrollView.FOCUS_UP);
-                break;
-        }
-    }
-    @Subscribe
-    public void onEventMainThread(BigEvent event) {
-        switch (event.getEventTypes()) {
-            case FGT_PLAY_GAME_REFRESH_H:
-                mHandler.sendEmptyMessage(WHAT_UPDATE_VP_HEIGHT);
-                break;
-            case FGT_PLAY_GAME_FOOT_VIEW_CALL_BACK:
-                Message msg = Message.obtain();
-                msg.what = WHAT_UPDATE_FOOT_VIEW_CALL_BACK;
-                msg.obj = event.getData();
-                if(msg.obj != null)
-                    mHandler.sendMessage(msg);
-                break;
-            case FGT_PLAY_GAME_SET_BOTTOM_LINE:
-                mHandler.sendEmptyMessage(WHAT_UPDATE_BOTTOM_LINE);
-                break;
         }
     }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-
-        EventBus.getDefault().unregister(this);
-    }
 }

+ 7 - 36
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtPlayGameSon.java

@@ -7,7 +7,6 @@ import android.view.View;
 import android.view.ViewGroup;
 
 import com.sheep.gamegroup.event.BigEvent;
-import com.sheep.gamegroup.event.EventTypes;
 import com.sheep.gamegroup.model.api.ApiService;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.GameEntity;
@@ -15,22 +14,20 @@ import com.sheep.gamegroup.model.entity.GameEntityList;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.view.adapter.PlayGameListAdapter;
+import com.sheep.jiuyan.samllsheep.R;
 
-import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
 
 import java.util.List;
 import java.util.Locale;
 
-import butterknife.ButterKnife;
 import rx.Observable;
-import rx.functions.Action1;
 
 /**
  * Created by ljy on 2018/9/3.
  */
 
-public class FgtPlayGameSon extends BaseListFragment2<GameEntity> {
+public class FgtPlayGameSon extends BaseListFragment3<GameEntity> {
     private int type;
 
     public static FgtPlayGameSon newInstance(int type){
@@ -43,33 +40,14 @@ public class FgtPlayGameSon extends BaseListFragment2<GameEntity> {
 
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-        // TODO: inflate a fragment view
         View rootView = super.onCreateView(inflater, container, savedInstanceState);
         Bundle bundle = getArguments();
         if(bundle != null){
             type = bundle.getInt("type", 1002);
         }
-        setPerpage(10);
         return rootView;
     }
 
-    @Override
-    public void setNoMore(boolean noMore) {
-        super.setNoMore(noMore);
-        EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.FGT_PLAY_GAME_SET_BOTTOM_LINE));
-    }
-
-    @Override
-    public Action1<String> getNoMoreCallBack() {
-        return new Action1<String>() {
-            @Override
-            public void call(String msg) {
-                if(isSelected)
-                    EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.FGT_PLAY_GAME_FOOT_VIEW_CALL_BACK).setData(msg));
-            }
-        };
-    }
-
     private GameEntityList gameEntityList = new GameEntityList(list);
     private List<GameEntityList> gameEntityListList = ListUtil.emptyList();
     @Override
@@ -94,25 +72,18 @@ public class FgtPlayGameSon extends BaseListFragment2<GameEntity> {
         return GameEntity.class;
     }
 
-    @Override
-    public void notifyData() {
-//        bottomLine.setVisibility(View.GONE);
-        if(isSelected)
-            EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.FGT_PLAY_GAME_REFRESH_H));
-    }
-
     @Subscribe
     public void onEventMainThread(BigEvent event){
         CommonUtil.getInstance().setEventResultViewStatus(event, view_list);
     }
-    private boolean isSelected = false;
-
-    public void setSelected(boolean selected) {
-        isSelected = selected;
-    }
 
     @Override
     protected boolean isFirstGetACache() {
         return false;
     }
+
+    @Override
+    protected int getItemHeight() {
+        return getResources().getDimensionPixelSize(R.dimen.content_padding_96);
+    }
 }

+ 6 - 6
app/src/main/res/layout/fgt_play_game.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<com.scwang.smartrefresh.layout.SmartRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:id="@+id/refresh"
     android:layout_width="match_parent"
@@ -23,6 +23,7 @@
             android:orientation="vertical">
 
             <include layout="@layout/homepage_item_banner" />
+
             <View
                 android:layout_width="match_parent"
                 android:layout_height="10dp"
@@ -33,6 +34,7 @@
                 <TextView
                     style="@style/style_wc_line_title"
                     android:text="每日必玩" />
+
                 <TextView
                     android:id="@+id/every_day_more_tv"
                     style="@style/style_wc_more"
@@ -64,9 +66,9 @@
             <android.support.v7.widget.RecyclerView
                 android:id="@+id/recent_hoe_list"
                 android:layout_width="match_parent"
-                android:paddingTop="4dp"
+                android:layout_height="wrap_content"
                 android:paddingBottom="4dp"
-                android:layout_height="wrap_content" />
+                android:paddingTop="4dp" />
 
             <View
                 android:layout_width="match_parent"
@@ -75,10 +77,8 @@
 
             <!--选项卡-->
             <include layout="@layout/tablayout_viewpager_layout" />
-
-            <include layout="@layout/find_item_bottom"/>
         </LinearLayout>
 
     </android.support.v4.widget.NestedScrollView>
 
-</android.support.v4.widget.SwipeRefreshLayout>
+</com.scwang.smartrefresh.layout.SmartRefreshLayout>

+ 31 - 0
app/src/main/res/layout/net_empty_rv.xml

@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/white">
+
+    <include
+        android:id="@+id/title"
+        layout="@layout/title" />
+
+    <include
+        android:id="@+id/check_net_ll"
+        layout="@layout/check_net_view"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/title" />
+
+    <include
+        android:id="@+id/empty_view"
+        layout="@layout/empty_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_below="@+id/check_net_ll" />
+
+    <android.support.v7.widget.RecyclerView
+        android:id="@+id/view_list"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_below="@+id/check_net_ll"
+        android:descendantFocusability="blocksDescendants"/>
+</RelativeLayout>