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

Merge remote-tracking branch 'origin/sheep2.0' into sheep2.0

zengjiebin лет назад: 8
Родитель
Сommit
fb6ded4613

+ 6 - 2
app/src/main/java/com/kfzs/duanduan/fragment/FgtSmallSheep.java

@@ -189,10 +189,13 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         if (upview1 != null) {
             //停止滚动
             upview1.stopScroll();
+            upview1.startScroll();
         }
         pagePresenter.getUserInfo();
 
-        pagePresenter.getAwardDetail();
+        if(views.size() < 1 ){
+            pagePresenter.getAwardDetail();
+        }
 
     }
 
@@ -299,6 +302,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
 
     }
     private  void  invite(final List<MoreDataEntity> loginEty){
+        views.clear();
         for (MoreDataEntity entity:loginEty) {
             StringBuilder  sb=new StringBuilder();
             sb.append(TimeStamp2Date(entity.getTime())+"   ");
@@ -311,7 +315,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
             moreView.setText(sb.toString());
             views.add(moreView);
         }
-
+        upview1.removeAllViews();
         upview1.setEasyViews(views);
         if(!upview1.isAutoStart()){
             upview1.stopScroll();

+ 19 - 5
app/src/main/java/com/kfzs/duanduan/view/ListMore.java

@@ -114,11 +114,25 @@ public class ListMore extends SwipeRefreshLayout {
         public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
 //            LogUtil.e(firstVisibleItem + "|" + visibleItemCount + "|" + totalItemCount + "|" +
 //                    isRefreshing() + "|" + ismPullMoreEnable());
-            if (mOnListMoreListener != null && totalItemCount > 0
-                    && ismPullMoreEnable() && !isRefreshing()
-                    && firstVisibleItem + visibleItemCount > totalItemCount - 1) {
-                setRefreshing(true);
-                mOnListMoreListener.onLoadMore();
+//            if (mOnListMoreListener != null && totalItemCount > 0
+//                    && ismPullMoreEnable() && !isRefreshing()
+//                    && firstVisibleItem + visibleItemCount > totalItemCount - 1) {
+//                setRefreshing(true);
+//                mOnListMoreListener.onLoadMore();
+//            }
+            if(mOnListMoreListener != null && !isRefreshing()){
+                if(firstVisibleItem == 0){
+                    ListMore.this.setEnabled(true);
+                    return;
+//                    setRefreshing(true);
+//                    mOnListMoreListener.onRefresh();
+                }else if( totalItemCount > 0 && ismPullMoreEnable() && firstVisibleItem + visibleItemCount > totalItemCount - 1){
+
+                    setRefreshing(true);
+                    mOnListMoreListener.onLoadMore();
+                    ListMore.this.setEnabled(true);
+                    return;
+                }
             }
             if (view.getChildCount() < 1) {
                 ListMore.this.setEnabled(true);

+ 33 - 14
app/src/main/java/com/sheep/gamegroup/view/activity/TaskListAct.java

@@ -8,6 +8,7 @@ import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
 import android.provider.MediaStore;
+import android.support.v4.widget.SwipeRefreshLayout;
 import android.text.TextUtils;
 import android.widget.ListView;
 
@@ -33,6 +34,7 @@ import com.sheep.gamegroup.presenter.TaskListContract;
 import com.sheep.gamegroup.presenter.TaskListPresenter;
 import com.sheep.gamegroup.util.UMConfigUtils;
 import com.sheep.gamegroup.view.adapter.TaskListItemAdp;
+import com.sheep.gamegroup.view.customview.RefreshLayout;
 import com.sheep.gamegroup.view.dialog.DialogShowLoading;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
@@ -60,7 +62,9 @@ import go.kfzssafe.Kfzssafe;
 
 public class TaskListAct extends BaseActivity implements TaskListContract.View, UpFileListener {
     @BindView(R.id.withdrawal_listview)
-    ListMore withdrawalListview;
+    ListView withdrawalListview;
+    @BindView(R.id.swipe_container)
+    RefreshLayout swipe_container;
 
     @Inject
     TaskListPresenter presenter;
@@ -95,27 +99,42 @@ public class TaskListAct extends BaseActivity implements TaskListContract.View,
         TitleBarUtils.getInstance()
                 .setTitle(this, "任务记录")
                 .setTitleFinish(this);
+        swipe_container.setFooterView(this, withdrawalListview, R.layout.listview_footer);
         adp = new TaskListItemAdp(activity , etyList);
-        withdrawalListview.getmListView().setAdapter(adp);
+        withdrawalListview.setAdapter(adp);
         adp.notifyDataSetChanged();
+//        swipe_container.setColorSchemeResources(R.color.blue,
+//                R.color.green,
+//                R.color.red,
+//                R.color.yellow2_end);
 
-
-
-        withdrawalListview.setDrivers(null);
-        withdrawalListview.setmPullMoreEnable(false);
-        withdrawalListview.setmOnListMoreListener(new ListMore.OnListMoreListener() {
+        swipe_container.setOnRefreshListener(new RefreshLayout.OnRefreshListener() {
             @Override
             public void onRefresh() {
+
+                etyList.clear();
                 page = 1;
                 initData();
             }
+        });
 
+        swipe_container.setOnLoadListener(new RefreshLayout.OnLoadListener() {
             @Override
-            public void onLoadMore() {
+            public void onLoad() {
+                swipe_container.setLoading(false);
                 if(etyList != null && etyList.size() >= per_page*page){
                     page += 1;
+                    initData();
+                }else {
+
+                    new Handler().postDelayed(new Runnable() {
+                        @Override
+                        public void run() {
+                            swipe_container.setRefreshing(false);
+                        }
+                    },1000);
                 }
-                initData();
+
             }
         });
 
@@ -128,19 +147,18 @@ public class TaskListAct extends BaseActivity implements TaskListContract.View,
 
     @Override
     public void initData() {
-        showProgress();
-        withdrawalListview.setRefreshing(true);
+//        showProgress();
+//        swipe_container.setRefreshing(true);
         presenter.acceptedTask(page,per_page);
     }
 
     @Override
     public void updataView(Object o) {
         hideProgress();
-        withdrawalListview.setRefreshing(false);
+        swipe_container.setRefreshing(false);
         try{
             BaseMessage baseMessage = (BaseMessage) o;
             List<TaskAcceptedEty> releaseEtyList = JSONArray.parseArray(JSONArray.toJSONString(baseMessage.getData()), TaskAcceptedEty.class);
-            etyList.clear();
             etyList.addAll(releaseEtyList);
             adp.notifyDataSetChanged();
         }catch (Exception e){
@@ -151,7 +169,8 @@ public class TaskListAct extends BaseActivity implements TaskListContract.View,
     @Override
     public void failView(Object o) {
         hideProgress();
-        withdrawalListview.setRefreshing(false);
+        swipe_container.setRefreshing(false);
+        adp.notifyDataSetChanged();
         G.showToast(((BaseMessage) o).getMsg()+"");
     }
 

+ 26 - 12
app/src/main/java/com/sheep/gamegroup/view/activity/WithdrawalListAct.java

@@ -2,6 +2,7 @@ package com.sheep.gamegroup.view.activity;
 
 import android.app.Activity;
 import android.os.Bundle;
+import android.os.Handler;
 import android.widget.ListView;
 
 import com.alibaba.fastjson.JSONArray;
@@ -14,6 +15,7 @@ import com.sheep.gamegroup.model.entity.WithdrawalEty;
 import com.sheep.gamegroup.presenter.WithdrawalListContract;
 import com.sheep.gamegroup.presenter.WithdrawalListPresenter;
 import com.sheep.gamegroup.view.adapter.WithdrawalListAdp;
+import com.sheep.gamegroup.view.customview.RefreshLayout;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.base.BaseActivity;
@@ -35,7 +37,9 @@ import butterknife.ButterKnife;
 
 public class WithdrawalListAct extends BaseActivity implements WithdrawalListContract.View{
     @BindView(R.id.withdrawal_listview)
-    ListMore withdrawalListview;
+    ListView withdrawalListview;
+    @BindView(R.id.swipe_container)
+    RefreshLayout swipe_container;
 
     @Inject
     WithdrawalListPresenter presenter;
@@ -62,27 +66,38 @@ public class WithdrawalListAct extends BaseActivity implements WithdrawalListCon
         TitleBarUtils.getInstance()
                 .setTitle(this, "提现明细")
                 .setTitleFinish(this);
+        swipe_container.setFooterView(this, withdrawalListview, R.layout.listview_footer);
         adp = new WithdrawalListAdp(activity, etyList);
-        withdrawalListview.getmListView().setAdapter(adp);
+        withdrawalListview.setAdapter(adp);
         adp.notifyDataSetChanged();
 
-
-
-        withdrawalListview.setDrivers(null);
-        withdrawalListview.setmPullMoreEnable(false);
-        withdrawalListview.setmOnListMoreListener(new ListMore.OnListMoreListener() {
+        swipe_container.setOnRefreshListener(new RefreshLayout.OnRefreshListener() {
             @Override
             public void onRefresh() {
+
+                etyList.clear();
                 page = 1;
                 initData();
             }
+        });
 
+        swipe_container.setOnLoadListener(new RefreshLayout.OnLoadListener() {
             @Override
-            public void onLoadMore() {
+            public void onLoad() {
+                swipe_container.setLoading(false);
                 if(etyList != null && etyList.size() >= per_page*page){
                     page += 1;
+                    initData();
+                }else {
+
+                    new Handler().postDelayed(new Runnable() {
+                        @Override
+                        public void run() {
+                            swipe_container.setRefreshing(false);
+                        }
+                    },1000);
                 }
-                initData();
+
             }
         });
     }
@@ -94,7 +109,6 @@ public class WithdrawalListAct extends BaseActivity implements WithdrawalListCon
 
     @Override
     public void initData() {
-        withdrawalListview.setRefreshing(true);
         presenter.goWithdrawal(page, per_page, 0+"",System.currentTimeMillis()+"");
 
     }
@@ -102,7 +116,7 @@ public class WithdrawalListAct extends BaseActivity implements WithdrawalListCon
     @Override
     public void updataView(Object o) {
 
-        withdrawalListview.setRefreshing(false);
+        swipe_container.setRefreshing(false);
         hideProgress();
         try{
             BaseMessage baseMessage = (BaseMessage) o;
@@ -117,7 +131,7 @@ public class WithdrawalListAct extends BaseActivity implements WithdrawalListCon
 
     @Override
     public void failView(Object o) {
-        withdrawalListview.setRefreshing(false);
+        swipe_container.setRefreshing(false);
         G.showToast(((BaseMessage) o).getMsg()+"");
     }
 }

+ 128 - 0
app/src/main/java/com/sheep/gamegroup/view/customview/RefreshLayout.java

@@ -0,0 +1,128 @@
+package com.sheep.gamegroup.view.customview;
+
+import android.content.Context;
+import android.support.v4.widget.SwipeRefreshLayout;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewConfiguration;
+import android.widget.HeaderViewListAdapter;
+import android.widget.ListView;
+
+/**
+ * Created by ljy on 2018/4/12.
+ */
+
+public class RefreshLayout extends SwipeRefreshLayout {
+    private int mTouchSlop;
+    private ListView mListView;
+    private OnLoadListener mOnLoadListener;
+    private View mListViewFooter;
+
+    private int mYDown;
+    private int mLastY;
+
+    private boolean isLoading = false;
+
+    public RefreshLayout(Context context) {
+        this(context, null);
+    }
+
+    public RefreshLayout(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    //set the footer of the ListView with a ProgressBar in it
+    public void setFooterView(Context context, ListView mListView, int layoutId) {
+        mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
+        mListViewFooter = LayoutInflater.from(context).inflate(layoutId, null,
+                false);
+        mListView.addFooterView(mListViewFooter);
+        mListView.setFooterDividersEnabled(false);
+        this.mListView = mListView;
+    }
+
+    @Override
+    public boolean dispatchTouchEvent(MotionEvent event) {
+        final int action = event.getAction();
+        switch (action) {
+            case MotionEvent.ACTION_DOWN:
+                mYDown = (int) event.getRawY();
+                break;
+
+            case MotionEvent.ACTION_MOVE:
+                mLastY = (int) event.getRawY();
+                if (isPullingUp()){
+//                    mListViewFooter.setVisibility(View.GONE);
+                }
+                //you can add view or hint here when pulling up the ListView
+                break;
+
+            case MotionEvent.ACTION_UP:
+                if (canLoad()) {
+                    loadData();
+                }
+                break;
+            default:
+                break;
+        }
+
+        return super.dispatchTouchEvent(event);
+    }
+
+    private boolean canLoad() {
+        return isBottom() && !isLoading && isPullingUp();
+    }
+
+    private boolean isBottom() {
+        if (mListView.getCount() > 0) {
+            if (mListView.getLastVisiblePosition() == mListView.getAdapter().getCount() - 1 &&
+                    mListView.getChildAt(mListView.getChildCount() - 1).getBottom() <= mListView.getHeight()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private boolean isPullingUp() {
+        return (mYDown - mLastY) >= mTouchSlop;
+    }
+
+    private void loadData() {
+        if (mOnLoadListener != null) {
+            setLoading(true);
+            mOnLoadListener.onLoad();
+        }
+    }
+
+    public void setLoading(boolean loading) {
+        isLoading = loading;
+        if (isLoading) {
+            if (isRefreshing()) setRefreshing(false);
+            if (mListView.getFooterViewsCount() == 0) {
+                mListView.addFooterView(mListViewFooter);
+                mListView.setSelection(mListView.getAdapter().getCount() - 1);
+            } else {
+                mListViewFooter.setVisibility(VISIBLE);
+                //mListView.addFooterView(mListViewFooter);
+            }
+        } else {
+            if (mListView.getAdapter() instanceof HeaderViewListAdapter) {
+                mListView.removeFooterView(mListViewFooter);
+            } else {
+                mListViewFooter.setVisibility(View.GONE);
+            }
+            mYDown = 0;
+            mLastY = 0;
+        }
+    }
+
+    public void setOnLoadListener(OnLoadListener loadListener) {
+        mOnLoadListener = loadListener;
+    }
+
+    public static interface OnLoadListener {
+        public void onLoad();
+    }
+}

+ 18 - 0
app/src/main/res/layout/listview_footer.xml

@@ -0,0 +1,18 @@
+<?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="wrap_content"
+    android:background="#FFFFFF"
+    android:gravity="center"
+    android:padding="8dp"
+    android:visibility="gone">
+
+    <ProgressBar
+        style="@android:style/Widget.DeviceDefault.Light.ProgressBar.Inverse"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerInParent="true"
+        android:indeterminate="true" />
+
+</RelativeLayout>

+ 14 - 7
app/src/main/res/layout/withdrawal_list.xml

@@ -6,12 +6,19 @@
     android:orientation="vertical">
 
     <include layout="@layout/title" />
-
-    <com.kfzs.duanduan.view.ListMore
-        android:id="@+id/withdrawal_listview"
+    <com.sheep.gamegroup.view.customview.RefreshLayout
+        android:id="@+id/swipe_container"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:listSelector="@color/transparent"
-        android:layout_margin="@dimen/content_padding_13"
-        android:scrollbars="none"></com.kfzs.duanduan.view.ListMore>
+        android:layout_height="match_parent">
+
+        <ListView
+            android:id="@+id/withdrawal_listview"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:listSelector="@color/transparent"
+            android:divider="@null"
+            android:layout_margin="@dimen/content_padding_13"
+            android:scrollbars="none"/>
+
+    </com.sheep.gamegroup.view.customview.RefreshLayout>
 </LinearLayout>