Просмотр исходного кода

联通分享添加描述;
双接口刷新修改

zengjiebin лет назад: 7
Родитель
Сommit
5d4f24304a

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/util/js/BaseActWeb.java

@@ -59,7 +59,7 @@ public abstract class BaseActWeb extends BaseActivity {
 //                                是否是联通卡分享 1:是 0:不是
 //                                分享链接需要加个 is_unicom  参数
                                         String url = addUrl(userEntity.getShareLink(), "is_unicom", "1");
-                                        new ShareLinkConfig().setLink(url).toShare(BaseActWeb.this);
+                                        new ShareLinkConfig().setLink(url).setTitle("下载小绵羊,免费领取联通大/小天神卡").toShare(BaseActWeb.this);
                                     }
                                 });
                             }

+ 1 - 0
app/src/main/java/com/sheep/gamegroup/view/activity/ActReservation.java

@@ -51,6 +51,7 @@ import static android.content.Intent.ACTION_PACKAGE_REMOVED;
 /**
  * Created by realicing on 2018/5/10.
  * realicing@sina.com
+ * 游戏预约
  */
 public class ActReservation extends BaseActivity {
     @Override

+ 264 - 0
app/src/main/java/com/sheep/gamegroup/view/fragment/BaseListFragment5.java

@@ -0,0 +1,264 @@
+package com.sheep.gamegroup.view.fragment;
+
+import android.app.Activity;
+import android.support.v4.widget.SwipeRefreshLayout;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
+import com.sheep.gamegroup.absBase.AbsObserver;
+import com.sheep.gamegroup.absBase.ILoadMore;
+import com.sheep.gamegroup.absBase.IRefresh;
+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.DataUtil;
+import com.sheep.gamegroup.util.ListUtil;
+import com.sheep.gamegroup.util.SysAppUtil;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.base.BaseFragment;
+
+import java.util.List;
+
+import butterknife.BindView;
+import io.reactivex.Observable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * Created by realicing on 2018/11/28.
+ * realicing@sina.com
+ * 可设置每次请求多个接口
+ * android.support.v4.widget.SwipeRefreshLayout与RecyclerView来实现上拉刷新与下拉加载更多,子类提供网络接口相关
+ */
+public abstract class BaseListFragment5<T> extends BaseFragment implements IRefresh, ILoadMore {
+    @Override
+    public int getLayoutId() {
+        return R.layout.common_title_net_srl_rv;
+    }
+
+    protected Activity activity;
+
+    @Override
+    public void onViewCreated() {
+        activity = getActivity();
+        initView();
+        initListener();
+        switch (refreshDataType()) {
+            case REFRESH_ON_CREATE:
+                refreshData();
+                break;
+            case REFRESH_ON_RESUME:
+                break;
+            case REFRESH_ON_YOURSELF:
+            default:
+                notifyDataSetChanged(0);
+                break;
+        }
+    }
+
+    public static final int REFRESH_ON_CREATE = 0;
+    public static final int REFRESH_ON_RESUME = 1;
+    public static final int REFRESH_ON_YOURSELF = -1;
+    @BindView(R.id.title)
+    View title;
+    @BindView(R.id.check_net_ll)
+    View check_net_ll;
+    @BindView(R.id.swipeRefreshLayout)
+    SwipeRefreshLayout swipeRefreshLayout;
+    @BindView(R.id.recyclerView)
+    RecyclerView recyclerView;
+
+    protected BaseQuickAdapter<T, BaseViewHolder> baseQuickAdapter;
+
+    protected BaseMessage lastMessage;//最后一个网络获取的结果
+    protected BaseMessage lastMessage2;//最后一个网络获取的结果
+    protected int page = 1;//页数
+    protected int per_page = DataUtil.PER_PAGE;
+    private boolean loadMore;
+
+    public void initView() {
+        ViewUtil.setVisibility(title, false);
+    }
+
+    public void initListener() {
+        if (swipeRefreshLayout != null) {
+            swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+                @Override
+                public void onRefresh() {
+                    refreshData();
+                }
+            });
+        }
+        recyclerView.setLayoutManager(getLayoutManager());
+        baseQuickAdapter = getAdapter();
+        baseQuickAdapter.bindToRecyclerView(recyclerView);
+        initLoadMoreListener();
+    }
+
+    protected void initLoadMoreListener() {
+        baseQuickAdapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() {
+            @Override
+            public void onLoadMoreRequested() {
+                loadMoreData();
+            }
+        }, recyclerView);
+    }
+
+    protected RecyclerView.LayoutManager getLayoutManager() {
+        return new LinearLayoutManager(SheepApp.getInstance());
+    }
+
+    public void loadMoreData() {
+        if (!loadMore) {
+            loadMore = true;
+            if (ListUtil.size(list) >= per_page * page) {
+                page += 1;
+                initData();
+            } else {
+                setNoMore(false);
+            }
+        } else {
+            finishRefresh();
+        }
+    }
+
+    protected void setNoMore(boolean noMore) {
+        if (noMore) {
+            baseQuickAdapter.loadMoreEnd(isLoadMoreGoneWhenNoMore());
+        }
+        finishRefresh();
+    }
+
+    protected boolean isLoadMoreGoneWhenNoMore() {
+        return false;
+    }
+
+    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);
+        }
+        if (check_net_ll != null) {
+            SysAppUtil.checkNet(new AbsObserver<Integer>() {
+                @Override
+                public void onNext(Integer result) {
+                    ViewUtil.setVisibility(check_net_ll, result != 0);
+                }
+            });
+        }
+        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(1);
+                        }
+                    }
+
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        notifyDataSetChanged(1);
+                    }
+                });
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        if (refreshDataType() == REFRESH_ON_RESUME) {
+            refreshData();
+        }
+    }
+
+    /**
+     * 在哪里初始化数据:0 onViewCreated后, 1 onResume后, -1 不初始化
+     *
+     * @return
+     */
+    public int refreshDataType() {
+        return REFRESH_ON_CREATE;
+    }
+
+    public void clear() {
+        lastMessage = null;
+        lastMessage2 = null;
+        setNoMore(true);
+        list.clear();
+        page = 1;
+        initLoadMoreListener();
+    }
+
+    public void refreshData() {
+        clear();
+        ViewUtil.notifyDataSetChanged(recyclerView);
+        initData();
+    }
+
+    protected List<T> newList;
+
+    protected void loadList(List<T> addList) {
+        ListUtil.addAllItem(list, addList);
+        newList = addList;
+        notifyDataSetChanged(1);
+    }
+
+    public void notifyDataSetChanged(int x) {
+        if (recyclerView == null)
+            recyclerView = findViewById(R.id.recyclerView);
+        loadMore = false;
+        updateEmptyView();
+        ViewUtil.notifyDataSetChanged(recyclerView);
+        finishRefresh();
+    }
+
+    protected void finishRefresh() {
+        if (swipeRefreshLayout != null)
+            swipeRefreshLayout.setRefreshing(false);
+        baseQuickAdapter.loadMoreComplete();
+    }
+
+    protected void updateEmptyView() {
+
+    }
+
+    @Override
+    public void onDestroyView() {
+        super.onDestroyView();
+        if (recyclerView != null) {
+            recyclerView = null;
+        }
+    }
+
+    protected abstract BaseQuickAdapter<T, BaseViewHolder> getAdapter();
+
+    protected abstract String getKey(int page, int per_page);
+
+    protected abstract Observable<BaseMessage> getApi(ApiService apiService);
+
+    protected abstract Class<T> getTClass();
+
+}

+ 78 - 83
app/src/main/java/com/sheep/gamegroup/view/fragment/BaseListFragment2x.java

@@ -1,18 +1,19 @@
 package com.sheep.gamegroup.view.fragment;
 
 import android.app.Activity;
+import android.support.v4.widget.SwipeRefreshLayout;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.view.View;
 
-import com.jcodecraeer.xrecyclerview.XRecyclerView;
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
 import com.sheep.gamegroup.absBase.AbsObserver;
 import com.sheep.gamegroup.absBase.ILoadMore;
 import com.sheep.gamegroup.absBase.IRefresh;
 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;
@@ -27,18 +28,17 @@ import butterknife.BindView;
 import io.reactivex.Observable;
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.schedulers.Schedulers;
-import rx.functions.Action1;
 
 /**
- * Created by realicing on 2018/11/22.
+ * Created by realicing on 2018/11/28.
  * realicing@sina.com
  * 可设置每次请求多个接口
- * 自己可以进行刷新与加载更多,使用com.jcodecraeer.xrecyclerview.XRecyclerView来实现,子类提供网络接口相关
+ * android.support.v4.widget.SwipeRefreshLayout与RecyclerView来实现上拉刷新与下拉加载更多,子类提供网络接口相关
  */
-public abstract class BaseListFragment2x<T,T2> extends BaseFragment implements IRefresh, ILoadMore {
+public abstract class BaseListFragment5x<I, T, T2> extends BaseFragment implements IRefresh, ILoadMore {
     @Override
     public int getLayoutId() {
-        return R.layout.net_empty_xrecycler;
+        return R.layout.common_title_net_srl_rv;
     }
 
     protected Activity activity;
@@ -50,7 +50,7 @@ public abstract class BaseListFragment2x<T,T2> extends BaseFragment implements I
         initListener();
         switch (refreshDataType()) {
             case REFRESH_ON_CREATE:
-                ViewUtil.refreshXrv(view_list);
+                refreshData();
                 break;
             case REFRESH_ON_RESUME:
                 break;
@@ -65,13 +65,15 @@ public abstract class BaseListFragment2x<T,T2> extends BaseFragment implements I
     public static final int REFRESH_ON_RESUME = 1;
     public static final int REFRESH_ON_YOURSELF = -1;
     @BindView(R.id.title)
-    protected View title;
-    @BindView(R.id.empty_view)
-    protected View empty_view;
+    View title;
     @BindView(R.id.check_net_ll)
-    protected View check_net_ll;
-    @BindView(R.id.view_list)
-    protected XRecyclerView view_list;
+    View check_net_ll;
+    @BindView(R.id.swipeRefreshLayout)
+    SwipeRefreshLayout swipeRefreshLayout;
+    @BindView(R.id.recyclerView)
+    RecyclerView recyclerView;
+
+    protected BaseQuickAdapter<I, BaseViewHolder> baseQuickAdapter;
 
     protected BaseMessage lastMessage;//最后一个网络获取的结果
     protected BaseMessage lastMessage2;//最后一个网络获取的结果
@@ -80,27 +82,35 @@ public abstract class BaseListFragment2x<T,T2> extends BaseFragment implements I
     private boolean loadMore;
 
     public void initView() {
-        title.setVisibility(View.GONE);
+        ViewUtil.setVisibility(title, false);
     }
 
-    protected View bottomLine;
-
     public void initListener() {
-        view_list.setLoadingListener(new XRecyclerView.LoadingListener() {
-            @Override
-            public void onRefresh() {
-                refreshData();
-            }
+        if (swipeRefreshLayout != null) {
+            swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+                @Override
+                public void onRefresh() {
+                    refreshData();
+                }
+            });
+        }
+        recyclerView.setLayoutManager(getLayoutManager());
+        baseQuickAdapter = getAdapter();
+        baseQuickAdapter.bindToRecyclerView(recyclerView);
+        initLoadMoreListener();
+    }
 
+    protected void initLoadMoreListener() {
+        baseQuickAdapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() {
             @Override
-            public void onLoadMore() {
+            public void onLoadMoreRequested() {
                 loadMoreData();
-
             }
-        });
-        bottomLine = ViewUtil.setBottomLine(view_list, getNoMoreCallBack());
-        view_list.setLayoutManager(new LinearLayoutManager(SheepApp.getInstance()));
-        view_list.setAdapter(getAdapter());
+        }, recyclerView);
+    }
+
+    protected RecyclerView.LayoutManager getLayoutManager() {
+        return new LinearLayoutManager(SheepApp.getInstance());
     }
 
     public void loadMoreData() {
@@ -110,16 +120,22 @@ public abstract class BaseListFragment2x<T,T2> extends BaseFragment implements I
                 page += 1;
                 initData();
             } else {
-                view_list.setNoMore(true);
-                setNoMore(true);
+                setNoMore(false);
             }
         } else {
-            view_list.loadMoreComplete();
+            finishRefresh();
+        }
+    }
+
+    protected void setNoMore(boolean noMore) {
+        if (noMore) {
+            baseQuickAdapter.loadMoreEnd(isLoadMoreGoneWhenNoMore());
         }
+        finishRefresh();
     }
 
-    public void setNoMore(boolean noMore) {
-        this.noMore = noMore;
+    protected boolean isLoadMoreGoneWhenNoMore() {
+        return false;
     }
 
     protected List<T> list = ListUtil.emptyList();
@@ -145,18 +161,14 @@ public abstract class BaseListFragment2x<T,T2> extends BaseFragment implements I
             lastCacheList2 = DataUtil.getInstance().getCacheList(urlKey2, getT2Class());
             loadList2(lastCacheList2);
         }
-        SysAppUtil.checkNet(new AbsObserver<Integer>() {
-            @Override
-            public void onNext(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);
+        if (check_net_ll != null) {
+            SysAppUtil.checkNet(new AbsObserver<Integer>() {
+                @Override
+                public void onNext(Integer result) {
+                    ViewUtil.setVisibility(check_net_ll, result != 0);
                 }
-            }
-        });
+            });
+        }
         getApi(SheepApp.getInstance().getNetComponent().getApiService())
                 .subscribeOn(Schedulers.io())
                 .observeOn(AndroidSchedulers.mainThread())
@@ -205,16 +217,11 @@ public abstract class BaseListFragment2x<T,T2> extends BaseFragment implements I
                 });
     }
 
-    public Action1<String> getNoMoreCallBack() {
-        return null;
-    }
-
-
     @Override
     public void onResume() {
         super.onResume();
         if (refreshDataType() == REFRESH_ON_RESUME) {
-            ViewUtil.refreshXrv(view_list);
+            refreshData();
         }
     }
 
@@ -230,16 +237,16 @@ public abstract class BaseListFragment2x<T,T2> extends BaseFragment implements I
     public void clear() {
         lastMessage = null;
         lastMessage2 = null;
-        setNoMore(false);
-        empty_view.setVisibility(View.INVISIBLE);
+        setNoMore(true);
         list.clear();
         list2.clear();
         page = 1;
+        initLoadMoreListener();
     }
 
     public void refreshData() {
         clear();
-        ViewUtil.notifyDataSetChanged(view_list);
+        ViewUtil.notifyDataSetChanged(recyclerView);
         initData();
     }
 
@@ -250,6 +257,7 @@ public abstract class BaseListFragment2x<T,T2> extends BaseFragment implements I
         newList = addList;
         notifyDataSetChanged(1);
     }
+
     protected List<T2> newList2;
 
     protected void loadList2(List<T2> addList) {
@@ -259,56 +267,43 @@ public abstract class BaseListFragment2x<T,T2> extends BaseFragment implements I
     }
 
     public void notifyDataSetChanged(int x) {
-        if (view_list == null)
-            view_list = findViewById(R.id.view_list);
-        if (empty_view == null)
-            empty_view = findViewById(R.id.empty_view);
+        if (recyclerView == null)
+            recyclerView = findViewById(R.id.recyclerView);
         loadMore = false;
         updateEmptyView();
-        if (page == 1) {
-            view_list.refreshComplete();
-        } else {
-            view_list.loadMoreComplete();
-        }
-        ViewUtil.notifyDataSetChanged(view_list);
-        notifyData(x);
-        view_list.getFootView().setVisibility(list.isEmpty() && list2.isEmpty() ? View.GONE : View.VISIBLE);
+        ViewUtil.notifyDataSetChanged(recyclerView);
+        finishRefresh();
+    }
+
+    protected void finishRefresh() {
+        if (swipeRefreshLayout != null)
+            swipeRefreshLayout.setRefreshing(false);
+        baseQuickAdapter.loadMoreComplete();
     }
 
     protected void updateEmptyView() {
-        CommonUtil.getInstance().updateEmptyView(empty_view, list.isEmpty() && list2.isEmpty());
+
     }
 
     @Override
     public void onDestroyView() {
         super.onDestroyView();
-        // any time,when you finish your activity or fragment,call this below
-        if (view_list != null) {
-            view_list.destroy(); // this will totally release XR's memory
-            view_list = null;
+        if (recyclerView != null) {
+            recyclerView = null;
         }
     }
 
-
-    private boolean noMore = false;
-
-    public boolean isNoMore() {
-        return noMore;
-    }
-
-    protected abstract RecyclerView.Adapter getAdapter();
+    protected abstract BaseQuickAdapter<I, BaseViewHolder> getAdapter();
 
     protected abstract String getKey(int page, int per_page);
+
     protected abstract String getKey2(int page, int per_page);
 
     protected abstract Observable<BaseMessage> getApi(ApiService apiService);
+
     protected abstract Observable<BaseMessage> getApi2(ApiService apiService);
 
     protected abstract Class<T> getTClass();
-    protected abstract Class<T2> getT2Class();
-
-    //刷新数据的回调,子类可以实现自己的需求
-    public void notifyData(int x){
 
-    }
+    protected abstract Class<T2> getT2Class();
 }

+ 7 - 12
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtUserFocusLogList.java

@@ -7,13 +7,13 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.TextView;
 
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
 import com.sheep.gamegroup.model.api.ApiService;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.UserFocusLog;
 import com.sheep.gamegroup.util.ListUtil;
-import com.sheep.gamegroup.util.ViewHolder;
 import com.sheep.gamegroup.util.ViewUtil;
-import com.sheep.gamegroup.view.adapter.AdbCommonRecycler;
 import com.sheep.gamegroup.view.adapter.AdpUserFocusLogList;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
@@ -33,7 +33,7 @@ import static com.sheep.gamegroup.absBase.AbsFocus.YES;
  * realicing@sina.com
  * 小绵羊3.4.5新界面--我的关注--人员列表子模块
  */
-public class FgtUserFocusLogList extends BaseListFragment2x<UserFocusLog, UserFocusLog> {
+public class FgtUserFocusLogList extends BaseListFragment5x<String, UserFocusLog, UserFocusLog> {
     private List<String> tagList = new ArrayList<>();
     private AdpUserFocusLogList adpUserFocusLogList;
     private AdpUserFocusLogList adpUserFocusLogList2;
@@ -60,22 +60,17 @@ public class FgtUserFocusLogList extends BaseListFragment2x<UserFocusLog, UserFo
     }
 
     @Override
-    protected RecyclerView.Adapter getAdapter() {
-        return new AdbCommonRecycler<String>(SheepApp.getInstance(), tagList) {
-            @Override
-            public int getViewIdByType(int type) {
-                return R.layout.common_rv_wrap;
-            }
+    protected BaseQuickAdapter<String, BaseViewHolder> getAdapter() {
+        return new BaseQuickAdapter<String, BaseViewHolder>(R.layout.common_rv_wrap, tagList) {
 
             @Override
-            public void convert(ViewHolder holder, String tag) {
+            protected void convert(BaseViewHolder holder, String item) {
                 RecyclerView recyclerView = holder.itemView.findViewById(R.id.recyclerView);
                 recyclerView.setHasFixedSize(true);
                 recyclerView.setNestedScrollingEnabled(false);
                 recyclerView.setLayoutManager(new LinearLayoutManager(SheepApp.getInstance()));
-                recyclerView.setAdapter(TextUtils.equals(tag, tagList.get(0)) ? adpUserFocusLogList : adpUserFocusLogList2);
+                recyclerView.setAdapter(TextUtils.equals(item, tagList.get(0)) ? adpUserFocusLogList : adpUserFocusLogList2);
             }
-
         };
     }
 

+ 13 - 0
app/src/main/res/layout/common_net_srl_rv.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/white"
+    android:orientation="vertical">
+
+    <include
+        android:id="@+id/check_net_ll"
+        layout="@layout/check_net_view" />
+
+    <include layout="@layout/common_srl_rv" />
+</LinearLayout>

+ 17 - 0
app/src/main/res/layout/common_srl_rv.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/swipeRefreshLayout"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <android.support.v7.widget.RecyclerView
+            android:id="@+id/recyclerView"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:descendantFocusability="blocksDescendants" />
+    </LinearLayout>
+</android.support.v4.widget.SwipeRefreshLayout>

+ 17 - 0
app/src/main/res/layout/common_title_net_srl_rv.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/white"
+    android:orientation="vertical">
+
+    <include
+        android:id="@+id/title"
+        layout="@layout/title" />
+
+    <include
+        android:id="@+id/check_net_ll"
+        layout="@layout/check_net_view" />
+
+    <include layout="@layout/common_srl_rv" />
+</LinearLayout>

+ 13 - 0
app/src/main/res/layout/common_title_srl_rv.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/white"
+    android:orientation="vertical">
+
+    <include
+        android:id="@+id/title"
+        layout="@layout/title" />
+
+    <include layout="@layout/common_srl_rv" />
+</LinearLayout>