詹子聪 5 år sedan
förälder
incheckning
e4ba40ea09

+ 5 - 1
app/src/main/java/com/miekir/ym/base/ApiService.java

@@ -60,9 +60,13 @@ public interface ApiService {
     Observable<BaseResponse<List<CouponBean>>> getCouponListByKeyword(@Query("keywords") String keyword, @Query("pageNum") int pageNum, @Query("pageSize") int pageSize);
 
     /**收藏或取消收藏*/
-    @POST("/shibei/api/favGoods")
+    @POST("shibei/api/favCoupon")
     Observable<BaseResponse<String>> favCoupon(@Query("couponId") long couponId);
 
+    /**获取我的收藏*/
+    @GET("shibei/api/getMyFavCoupon")
+    Observable<BaseResponse<List<CouponBean>>> getMyFavCoupon(@Query("pageNum") int pageNum, @Query("pageSize") int pageSize);
+
 
 //    /*----------------------------------------升级信息----------------------------------------*/
 //    /**获取版本更新信息*/

+ 1 - 0
app/src/main/java/com/miekir/ym/ui/home/coupon/CouponFragment.java

@@ -204,6 +204,7 @@ public class CouponFragment extends BaseMvpFragment implements ICouponView<Coupo
     @Override
     public void onDeleteCoupon(boolean success, String message, int position) {
         if (success) {
+            mCouponBeanList.remove(position);
             mAdapter.notifyItemRemoved(position);
             ToastTool.showShort("删除成功");
         } else {

+ 17 - 0
app/src/main/java/com/miekir/ym/ui/home/more/favorite/IMyFavView.java

@@ -0,0 +1,17 @@
+package com.miekir.ym.ui.home.more.favorite;
+
+import com.miekir.mvp.view.IView;
+import com.miekir.ym.ui.home.coupon.CouponBean;
+
+import java.util.List;
+
+/**
+ *
+ *
+ * @author Miekir
+ * @date 2020/7/9 20:52
+ * Description: 商品的View回调
+ */
+public interface IMyFavView extends IView {
+    void onFavCouponDataCome(boolean success, String message, List<CouponBean> goodsList);
+}

+ 149 - 0
app/src/main/java/com/miekir/ym/ui/home/more/favorite/MyFavActivity.java

@@ -0,0 +1,149 @@
+package com.miekir.ym.ui.home.more.favorite;
+
+import android.os.Bundle;
+
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.bumptech.glide.Glide;
+import com.miekir.common.utils.ToastTool;
+import com.miekir.mvp.presenter.InjectPresenter;
+import com.miekir.ym.R;
+import com.miekir.ym.base.YangActivity;
+import com.miekir.ym.listener.OnRcvScrollListener;
+import com.miekir.ym.ui.home.coupon.CouponAdapter;
+import com.miekir.ym.ui.home.coupon.CouponBean;
+import com.miekir.ym.ui.home.coupon.ICouponView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Copyright (C), 2019-2020, Miekir
+ *
+ * @author Miekir
+ * @date 2020/8/12 19:40
+ * Description: 输入文字搜索
+ */
+public class MyFavActivity extends YangActivity implements IMyFavView, ICouponView<CouponBean> {
+    private static final int PAGE_START = 0;
+    private static final int PAGE_SIZE = 20;
+    private int mCurrentPage = PAGE_START;
+
+    private RecyclerView rv_search_result;
+    private List<CouponBean> mGoodsList = new ArrayList<>();
+    private CouponAdapter mAdapter;
+    private boolean mIsLoading = false;
+
+    @InjectPresenter
+    MyFavPresenter myFavPresenter;
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.activity_my_fav;
+    }
+
+    @Override
+    public void initViews(Bundle savedInstanceState) {
+        setTitle("我的收藏");
+        rv_search_result = findViewById(R.id.rv_search_result);
+        // 必须要设置LayoutManager,否则RecyclerView不知道要使用什么布局,从而在界面上不显示
+        LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
+        rv_search_result.setLayoutManager(layoutManager);
+        mAdapter = new CouponAdapter(this, mGoodsList);
+        rv_search_result.setAdapter(mAdapter);
+        mAdapter.setEmptyView(R.layout.view_empty, rv_search_result);
+
+        // 加载更多
+        rv_search_result.addOnScrollListener(new OnRcvScrollListener() {
+            // 滑动时不要去加载图片
+            //RecyclerView.SCROLL_STATE_IDLE //空闲状态
+            //RecyclerView.SCROLL_STATE_FLING //滚动状态
+            //RecyclerView.SCROLL_STATE_TOUCH_SCROLL //触摸后状态
+            @Override
+            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
+                super.onScrollStateChanged(recyclerView, newState);
+                if (newState == RecyclerView.SCROLL_STATE_IDLE) {
+                    //恢复Glide加载图片
+                    Glide.with(getApplicationContext()).resumeRequests();
+                } else {
+                    //禁止Glide加载图片
+                    Glide.with(getApplicationContext()).pauseRequests();
+                }
+            }
+
+            @Override
+            public void onBottom() {
+                super.onBottom();
+                if (mIsLoading) {
+                    return;
+                }
+
+                // 如果到底部了,而且不是正在加载状态,就变为正在加载状态,并及时去加载数据
+                showLoading();
+                mIsLoading = true;
+                myFavPresenter.getMyFavGoods(mCurrentPage, PAGE_SIZE);
+            }
+        });
+    }
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        showLoading();
+        mIsLoading = true;
+        myFavPresenter.getMyFavGoods(mCurrentPage, PAGE_SIZE);
+    }
+
+    /**
+     * 获取商品结果
+     *
+     * @param success
+     * @param goodsList
+     */
+    @Override
+    public void onCouponDataCome(boolean success, String message, List<CouponBean> goodsList) {
+
+    }
+
+    @Override
+    public void onDeleteCoupon(boolean success, String message, int position) {
+        if (success) {
+            mGoodsList.remove(position);
+            mAdapter.notifyItemRemoved(position);
+            ToastTool.showShort("删除成功");
+        } else {
+            ToastTool.showShort("删除失败");
+        }
+    }
+
+    @Override
+    public void onFavCouponDataCome(boolean success, String message, List<CouponBean> goodsList) {
+        mIsLoading = false;
+
+        if (!success) {
+            ToastTool.showShort(message);
+            return;
+        }
+
+
+        if (goodsList != null) {
+            int start = mGoodsList.size();
+            mGoodsList.addAll(goodsList);
+            if (mCurrentPage > PAGE_START) {
+                // 刚开始数据为0时不能使用notifyItemRangeInserted
+                mAdapter.notifyItemRangeInserted(start, goodsList.size());
+            } else {
+                mAdapter.notifyDataSetChanged();
+            }
+        }
+
+        // 请求到数据了,页数自增
+        if (goodsList != null && goodsList.size() > 0) {
+            mCurrentPage++;
+        } else {
+            ToastTool.showShort("没有更多数据了");
+        }
+    }
+}

+ 53 - 0
app/src/main/java/com/miekir/ym/ui/home/more/favorite/MyFavPresenter.java

@@ -0,0 +1,53 @@
+package com.miekir.ym.ui.home.more.favorite;
+
+import com.miekir.mvp.presenter.BasePresenter;
+import com.miekir.network.widget.observe.NetMvpObserver;
+import com.miekir.ym.base.ApiService;
+import com.miekir.ym.net.RetrofitHelper;
+import com.miekir.ym.ui.home.coupon.CouponBean;
+
+import java.util.List;
+
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * Copyright (C), 2019-2020, Miekir
+ *
+ * @author Miekir
+ * @date 2020/8/20 19:18
+ * Description:
+ */
+public class MyFavPresenter extends BasePresenter<IMyFavView> {
+
+    /**
+     * 获取配置信息
+     */
+    public void getMyFavGoods(int pageNum, int pageSize) {
+        NetMvpObserver observer = new NetMvpObserver<List<CouponBean>>(this) {
+            @Override
+            public void onSuccess(int code, List<CouponBean> result) {
+                post(view -> view.onFavCouponDataCome(true, "获取成功", result));
+            }
+
+            @Override
+            public void onFailure(int code, Throwable e, String errMsg) {
+                post(view -> view.onFavCouponDataCome(false, "获取失败", null));
+            }
+        };
+
+        mProgressDisposableList.add(observer);
+
+        RetrofitHelper.getInstance()
+                .getRequestApi(ApiService.class)
+                .getMyFavCoupon(pageNum, pageSize)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(observer);
+    }
+
+    @Override
+    public void onInit() {
+
+    }
+}

+ 1 - 0
app/src/main/java/com/miekir/ym/ui/home/search/SearchActivity.java

@@ -233,6 +233,7 @@ public class SearchActivity extends YangActivity implements View.OnClickListener
     public void onDeleteCoupon(boolean success, String message, int position) {
         // 删除结果
         if (success) {
+            mCouponList.remove(position);
             mAdapter.notifyItemRemoved(position);
             ToastTool.showShort("删除成功");
         } else {

+ 20 - 0
app/src/main/res/layout/activity_my_fav.xml

@@ -0,0 +1,20 @@
+<?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:orientation="vertical"
+    android:id="@+id/ll_search"
+    android:focusable="true"
+    android:focusableInTouchMode="true"
+    android:fitsSystemWindows="true"
+    android:background="@color/white">
+
+    <include layout="@layout/view_toolbar"/>
+
+    <androidx.recyclerview.widget.RecyclerView
+        android:id="@+id/rv_search_result"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"/>
+
+</LinearLayout>