Procházet zdrojové kódy

刷新数据的底部显示状态正确

zengjiebin před 7 roky
rodič
revize
378f51c46a

+ 17 - 1
app/src/main/java/com/sheep/gamegroup/absBase/ApiRefresh.java

@@ -19,6 +19,9 @@ import io.reactivex.schedulers.Schedulers;
  * realicing@sina.com
  * realicing@sina.com
  */
  */
 public abstract class ApiRefresh<T> {
 public abstract class ApiRefresh<T> {
+    public ApiRefresh(BaseListFragment6<?> baseListFragment6) {
+        this.baseListFragment6 = baseListFragment6;
+    }
 
 
     public abstract String getKey(int page, int per_page);
     public abstract String getKey(int page, int per_page);
 
 
@@ -31,8 +34,21 @@ public abstract class ApiRefresh<T> {
     protected int per_page = DataUtil.PER_PAGE;
     protected int per_page = DataUtil.PER_PAGE;
     private boolean loadMore;
     private boolean loadMore;
     protected List<T> list = ListUtil.emptyList();
     protected List<T> list = ListUtil.emptyList();
+
+    public List<T> getList() {
+        return list;
+    }
+
     protected List<T> lastCacheList = ListUtil.emptyList();
     protected List<T> lastCacheList = ListUtil.emptyList();
 
 
+    public List<T> getLastCacheList() {
+        return lastCacheList;
+    }
+
+    public BaseMessage getLastMessage() {
+        return lastMessage;
+    }
+
     public boolean loadMoreData() {
     public boolean loadMoreData() {
         if (!loadMore) {
         if (!loadMore) {
             loadMore = true;
             loadMore = true;
@@ -41,7 +57,7 @@ public abstract class ApiRefresh<T> {
                 initData();
                 initData();
             } else {
             } else {
                 if (baseListFragment6 != null)
                 if (baseListFragment6 != null)
-                    baseListFragment6.setNoMore(false);
+                    baseListFragment6.setNoMore(true);
             }
             }
             return false;
             return false;
         } else {
         } else {

+ 0 - 309
app/src/main/java/com/sheep/gamegroup/view/fragment/BaseListFragment5x.java

@@ -1,309 +0,0 @@
-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 BaseListFragment5x<I, T, T2> 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<I, 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(true);
-            }
-        } else {
-            finishRefresh();
-        }
-    }
-
-    protected void setNoMore(boolean noMore) {
-        if (noMore) {
-            baseQuickAdapter.loadMoreEnd(isLoadMoreGoneWhenNoMore());
-        }
-        finishRefresh();
-    }
-
-    protected boolean isLoadMoreGoneWhenNoMore() {
-        return true;
-    }
-
-    protected List<T> list = ListUtil.emptyList();
-    protected List<T> lastCacheList = ListUtil.emptyList();
-    protected List<T2> list2 = ListUtil.emptyList();
-    protected List<T2> lastCacheList2 = 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);
-        }
-        final String urlKey2 = getKey2(page, per_page);
-        if (isFirstGetACache()) {
-            //先尝试获取缓存数据
-            lastCacheList2 = DataUtil.getInstance().getCacheList(urlKey2, getT2Class());
-            loadList2(lastCacheList2);
-        }
-        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);
-                    }
-                });
-        getApi2(SheepApp.getInstance().getNetComponent().getApiService())
-                .subscribeOn(Schedulers.io())
-                .observeOn(AndroidSchedulers.mainThread())
-                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
-                    @Override
-                    public void onNext(BaseMessage baseMessage) {
-                        lastMessage2 = baseMessage;
-                        boolean isNewData = DataUtil.getInstance().isNewData(urlKey2);
-                        if (isNewData || !isFirstGetACache()) {
-                            if (isFirstGetACache())
-                                ListUtil.removeAll(list2, lastCacheList2);
-                            List<T2> newList = baseMessage.getDatas(getT2Class());
-                            loadList2(newList);
-                        } else {
-                            notifyDataSetChanged(2);
-                        }
-                    }
-
-                    @Override
-                    public void onError(BaseMessage baseMessage) {
-                        notifyDataSetChanged(2);
-                    }
-                });
-    }
-
-    @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(false);
-        list.clear();
-        list2.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);
-    }
-
-    protected List<T2> newList2;
-
-    protected void loadList2(List<T2> addList) {
-        ListUtil.addAllItem(list2, addList);
-        newList2 = addList;
-        notifyDataSetChanged(2);
-    }
-
-    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<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();
-}

+ 33 - 16
app/src/main/java/com/sheep/gamegroup/view/fragment/BaseListFragment6.java

@@ -8,6 +8,7 @@ import android.view.View;
 
 
 import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.chad.library.adapter.base.BaseViewHolder;
 import com.chad.library.adapter.base.BaseViewHolder;
+import com.chad.library.adapter.base.loadmore.LoadMoreView;
 import com.sheep.gamegroup.absBase.AbsObserver;
 import com.sheep.gamegroup.absBase.AbsObserver;
 import com.sheep.gamegroup.absBase.ApiRefresh;
 import com.sheep.gamegroup.absBase.ApiRefresh;
 import com.sheep.gamegroup.absBase.ILoadMore;
 import com.sheep.gamegroup.absBase.ILoadMore;
@@ -56,7 +57,8 @@ public abstract class BaseListFragment6<T> extends BaseFragment implements IRefr
                 break;
                 break;
         }
         }
     }
     }
-    private List<ApiRefresh<? extends Object>> apiRefreshList = new ArrayList<>();
+
+    protected List<ApiRefresh<? extends Object>> apiRefreshList = new ArrayList<>();
 
 
     public static final int REFRESH_ON_CREATE = 0;
     public static final int REFRESH_ON_CREATE = 0;
     public static final int REFRESH_ON_RESUME = 1;
     public static final int REFRESH_ON_RESUME = 1;
@@ -90,6 +92,27 @@ public abstract class BaseListFragment6<T> extends BaseFragment implements IRefr
         baseQuickAdapter = getAdapter();
         baseQuickAdapter = getAdapter();
         baseQuickAdapter.bindToRecyclerView(recyclerView);
         baseQuickAdapter.bindToRecyclerView(recyclerView);
         initLoadMoreListener();
         initLoadMoreListener();
+        baseQuickAdapter.setLoadMoreView(new LoadMoreView() {
+            @Override
+            public int getLayoutId() {
+                return R.layout.common_load_more;
+            }
+
+            @Override
+            protected int getLoadingViewId() {
+                return R.id.load_more_loading_view;
+            }
+
+            @Override
+            protected int getLoadFailViewId() {
+                return R.id.load_more_load_fail_view;
+            }
+
+            @Override
+            protected int getLoadEndViewId() {
+                return R.id.load_more_load_end_view;
+            }
+        });
     }
     }
 
 
     protected void initLoadMoreListener() {
     protected void initLoadMoreListener() {
@@ -109,7 +132,7 @@ public abstract class BaseListFragment6<T> extends BaseFragment implements IRefr
         ListUtil.forEach(apiRefreshList, new Action1<ApiRefresh<? extends Object>>() {
         ListUtil.forEach(apiRefreshList, new Action1<ApiRefresh<? extends Object>>() {
             @Override
             @Override
             public void call(ApiRefresh<?> apiRefresh) {
             public void call(ApiRefresh<?> apiRefresh) {
-                if(apiRefresh.loadMoreData()){
+                if (apiRefresh.loadMoreData()) {
                     finishRefresh();
                     finishRefresh();
                 }
                 }
             }
             }
@@ -118,15 +141,13 @@ public abstract class BaseListFragment6<T> extends BaseFragment implements IRefr
 
 
     public void setNoMore(boolean noMore) {
     public void setNoMore(boolean noMore) {
         if (noMore) {
         if (noMore) {
-            baseQuickAdapter.loadMoreEnd(isLoadMoreGoneWhenNoMore());
+            baseQuickAdapter.loadMoreEnd();
+        } else {
+            baseQuickAdapter.loadMoreComplete();
         }
         }
         finishRefresh();
         finishRefresh();
     }
     }
 
 
-    protected boolean isLoadMoreGoneWhenNoMore() {
-        return false;
-    }
-
     @Override
     @Override
     public void onResume() {
     public void onResume() {
         super.onResume();
         super.onResume();
@@ -161,11 +182,13 @@ public abstract class BaseListFragment6<T> extends BaseFragment implements IRefr
             }
             }
         });
         });
     }
     }
-    protected void clear(){
-        setNoMore(true);
+
+    protected void clear() {
+        setNoMore(false);
         initLoadMoreListener();
         initLoadMoreListener();
     }
     }
-    public void checkMetLl(){
+
+    public void checkMetLl() {
         if (check_net_ll != null) {
         if (check_net_ll != null) {
             SysAppUtil.checkNet(new AbsObserver<Integer>() {
             SysAppUtil.checkNet(new AbsObserver<Integer>() {
                 @Override
                 @Override
@@ -185,7 +208,6 @@ public abstract class BaseListFragment6<T> extends BaseFragment implements IRefr
                 apiRefresh.setLoadMore(false);
                 apiRefresh.setLoadMore(false);
             }
             }
         });
         });
-        updateEmptyView();
         ViewUtil.notifyDataSetChanged(recyclerView);
         ViewUtil.notifyDataSetChanged(recyclerView);
         finishRefresh();
         finishRefresh();
     }
     }
@@ -193,11 +215,6 @@ public abstract class BaseListFragment6<T> extends BaseFragment implements IRefr
     protected void finishRefresh() {
     protected void finishRefresh() {
         if (swipeRefreshLayout != null)
         if (swipeRefreshLayout != null)
             swipeRefreshLayout.setRefreshing(false);
             swipeRefreshLayout.setRefreshing(false);
-        baseQuickAdapter.loadMoreComplete();
-    }
-
-    protected void updateEmptyView() {
-
     }
     }
 
 
     @Override
     @Override

+ 58 - 54
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtUserFocusLogList.java

@@ -9,6 +9,7 @@ import android.widget.TextView;
 
 
 import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.chad.library.adapter.base.BaseViewHolder;
 import com.chad.library.adapter.base.BaseViewHolder;
+import com.sheep.gamegroup.absBase.ApiRefresh;
 import com.sheep.gamegroup.model.api.ApiService;
 import com.sheep.gamegroup.model.api.ApiService;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.UserFocusLog;
 import com.sheep.gamegroup.model.entity.UserFocusLog;
@@ -33,7 +34,7 @@ import static com.sheep.gamegroup.absBase.AbsFocus.YES;
  * realicing@sina.com
  * realicing@sina.com
  * 小绵羊3.4.5新界面--我的关注--人员列表子模块
  * 小绵羊3.4.5新界面--我的关注--人员列表子模块
  */
  */
-public class FgtUserFocusLogList extends BaseListFragment5x<String, UserFocusLog, UserFocusLog> {
+public class FgtUserFocusLogList extends BaseListFragment6<String> {
     private List<String> tagList = new ArrayList<>();
     private List<String> tagList = new ArrayList<>();
     private AdpUserFocusLogList adpUserFocusLogList;
     private AdpUserFocusLogList adpUserFocusLogList;
     private AdpUserFocusLogList adpUserFocusLogList2;
     private AdpUserFocusLogList adpUserFocusLogList2;
@@ -41,24 +42,77 @@ public class FgtUserFocusLogList extends BaseListFragment5x<String, UserFocusLog
     private Action1<Integer> action1 = new Action1<Integer>() {
     private Action1<Integer> action1 = new Action1<Integer>() {
         @Override
         @Override
         public void call(Integer integer) {
         public void call(Integer integer) {
-            switch (integer){
+            switch (integer) {
                 case YES:
                 case YES:
                     refreshData();
                     refreshData();
                     break;
                     break;
             }
             }
         }
         }
     };
     };
+
     @Override
     @Override
     public void initView() {
     public void initView() {
         tagList.add("1");
         tagList.add("1");
         tagList.add("2");
         tagList.add("2");
-        adpUserFocusLogList = new AdpUserFocusLogList(list);
-        adpUserFocusLogList2 = new AdpUserFocusLogList(list2);
+        ApiRefresh<UserFocusLog> apiRefresh1 = new ApiRefresh<UserFocusLog>(this) {
+            @Override
+            public String getKey(int page, int per_page) {
+                return ApiKey.pageKeyUrl(ApiKey.getGameUserUserFocusList, page, per_page);
+            }
+
+            @Override
+            public Observable<BaseMessage> getApi(ApiService apiService) {
+                return apiService.getGameUserUserFocusList(page, per_page);
+            }
+
+            @Override
+            public Class<UserFocusLog> getTClass() {
+                return null;
+            }
+        };
+        ApiRefresh<UserFocusLog> apiRefresh2 = new ApiRefresh<UserFocusLog>(this) {
+            @Override
+            public String getKey(int page, int per_page) {
+                return ApiKey.pageKeyUrl(ApiKey.getGameUserUserFocusHotUser, page, per_page);
+            }
+
+            @Override
+            public Observable<BaseMessage> getApi(ApiService apiService) {
+                return apiService.getGameUserUserFocusHotUser(page, per_page);
+            }
+
+            @Override
+            public Class<UserFocusLog> getTClass() {
+                return UserFocusLog.class;
+            }
+
+            @Override
+            protected void loadList(List<UserFocusLog> addList) {
+                if (ListUtil.isEmpty(addList)) {
+                    if (adpUserFocusLogList2.getHeaderLayoutCount() > 0) {
+                        adpUserFocusLogList2.removeAllHeaderView();
+                    }
+                } else {
+                    if (adpUserFocusLogList2.getHeaderLayoutCount() == 0) {
+                        if (headerView == null)
+                            headerView = LayoutInflater.from(SheepApp.getInstance()).inflate(R.layout.header_my_focus_hot_user, null);
+                        adpUserFocusLogList2.addHeaderView(headerView);
+                    }
+                }
+                super.loadList(addList);
+            }
+        };
+        apiRefreshList.add(apiRefresh1);
+        apiRefreshList.add(apiRefresh2);
+        adpUserFocusLogList = new AdpUserFocusLogList(apiRefresh1.getList());
+        adpUserFocusLogList2 = new AdpUserFocusLogList(apiRefresh2.getList());
         adpUserFocusLogList.setAction1(action1);
         adpUserFocusLogList.setAction1(action1);
         adpUserFocusLogList2.setAction1(action1);
         adpUserFocusLogList2.setAction1(action1);
         super.initView();
         super.initView();
     }
     }
 
 
+    private View headerView;
+
     @Override
     @Override
     protected BaseQuickAdapter<String, BaseViewHolder> getAdapter() {
     protected BaseQuickAdapter<String, BaseViewHolder> getAdapter() {
         return new BaseQuickAdapter<String, BaseViewHolder>(R.layout.common_rv_wrap, tagList) {
         return new BaseQuickAdapter<String, BaseViewHolder>(R.layout.common_rv_wrap, tagList) {
@@ -74,56 +128,6 @@ public class FgtUserFocusLogList extends BaseListFragment5x<String, UserFocusLog
         };
         };
     }
     }
 
 
-    @Override
-    protected String getKey(int page, int per_page) {
-        return ApiKey.pageKeyUrl(ApiKey.getGameUserUserFocusList, page, per_page);
-    }
-
-    @Override
-    protected String getKey2(int page, int per_page) {
-        return ApiKey.pageKeyUrl(ApiKey.getGameUserUserFocusHotUser, page, per_page);
-    }
-
-    @Override
-    protected Observable<BaseMessage> getApi(ApiService apiService) {
-        return apiService.getGameUserUserFocusList(page, per_page);
-    }
-
-    @Override
-    protected Observable<BaseMessage> getApi2(ApiService apiService) {
-        return apiService.getGameUserUserFocusHotUser(page, per_page);
-    }
-
-    private View headerView;
-
-    @Override
-    protected void loadList2(List<UserFocusLog> addList) {
-        if (ListUtil.isEmpty(addList)) {
-            if (adpUserFocusLogList2.getHeaderLayoutCount() > 0) {
-                adpUserFocusLogList2.removeAllHeaderView();
-            }
-        } else {
-            //TODO 这里有个问题,这里的关注状态怎么获取,按理说热门玩家不应该都是已经关注的用户才对
-            if (adpUserFocusLogList2.getHeaderLayoutCount() == 0) {
-                if (headerView == null)
-                    headerView = LayoutInflater.from(SheepApp.getInstance()).inflate(R.layout.header_my_focus_hot_user, null);
-                adpUserFocusLogList2.addHeaderView(headerView);
-            }
-        }
-        super.loadList2(addList);
-    }
-
-    @Override
-    protected Class<UserFocusLog> getTClass() {
-        return UserFocusLog.class;
-    }
-
-    @Override
-    protected Class<UserFocusLog> getT2Class() {
-        return UserFocusLog.class;
-    }
-
-
     /**
     /**
      * 设置关注按钮文本与状态
      * 设置关注按钮文本与状态
      *
      *

+ 46 - 0
app/src/main/res/layout/common_load_more.xml

@@ -0,0 +1,46 @@
+<?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="wrap_content"
+    android:gravity="center"
+    android:orientation="horizontal"
+    android:padding="@dimen/content_padding_20"
+    android:visibility="visible">
+
+    <ImageView
+        android:layout_width="30dp"
+        android:layout_height="wrap_content"
+        android:adjustViewBounds="true"
+        android:scaleType="fitXY"
+        android:src="@mipmap/bottom_icon" />
+
+    <RelativeLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="@dimen/content_padding">
+
+        <TextView
+            android:id="@+id/load_more_loading_view"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/loading"
+            android:textColor="#C0C0C0"
+            android:textSize="14sp" />
+
+        <TextView
+            android:id="@+id/load_more_load_end_view"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="我是有底线的"
+            android:textColor="#C0C0C0"
+            android:textSize="14sp" />
+
+        <TextView
+            android:id="@+id/load_more_load_fail_view"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="暂无数据"
+            android:textColor="#C0C0C0"
+            android:textSize="14sp" />
+    </RelativeLayout>
+</LinearLayout>