소스 검색

我的收藏

詹子聪 5 년 전
부모
커밋
8dee720e5b

+ 5 - 0
app/src/main/AndroidManifest.xml

@@ -104,6 +104,11 @@
             android:name=".ui.home.goods.detail.MeizhiDetailActivity"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.MeizhiDetail" />
+
+        <activity
+            android:name=".ui.mine.fav.MyFavActivity"
+            android:screenOrientation="portrait"
+            android:theme="@style/TextInputStyle" />
     </application>
 
 </manifest>

+ 4 - 0
app/src/main/java/com/itant/shibei/base/ApiService.java

@@ -112,4 +112,8 @@ public interface ApiService {
     @GET("/eden/api/seeGoods")
     Observable<BaseResponse<Void>> seeGoods(@Query("goodsId") long goodsId);
 
+    /**获取我的收藏*/
+    @GET("/eden/api/getMyFavGoods")
+    Observable<BaseResponse<List<GoodsBean>>> getMyFavGoods(@Query("pageNum") int pageNum, @Query("pageSize") int pageSize);
+
 }

+ 7 - 0
app/src/main/java/com/itant/shibei/ui/home/search/SearchActivity.java

@@ -45,6 +45,7 @@ public class SearchActivity extends BaseBeiActivity implements View.OnClickListe
     private List<GoodsBean> mGoodsList = new ArrayList<>();
     private GoodsAdapter mAdapter;
     private boolean mIsRefresh = true;
+    private boolean mIsLoading = false;
 
     private String mKeyword;
 
@@ -82,6 +83,9 @@ public class SearchActivity extends BaseBeiActivity implements View.OnClickListe
             @Override
             public void onBottom() {
                 super.onBottom();
+                if (mIsLoading) {
+                    return;
+                }
                 if (mKeyword.startsWith("http")) {
                     // 搜索链接不要加载更多功能
                     return;
@@ -89,6 +93,7 @@ public class SearchActivity extends BaseBeiActivity implements View.OnClickListe
                 // 如果到底部了,而且不是正在加载状态,就变为正在加载状态,并及时去加载数据
                 showLoading();
                 mIsRefresh = false;
+                mIsLoading = true;
                 searchPresenter.searchByKeyword(mKeyword, mCurrentPage, PAGE_SIZE);
             }
         });
@@ -113,6 +118,7 @@ public class SearchActivity extends BaseBeiActivity implements View.OnClickListe
                 mGoodsList.clear();
                 mAdapter.notifyDataSetChanged();
                 mIsRefresh = true;
+                mIsLoading = true;
                 searchPresenter.searchByKeyword(mKeyword, mCurrentPage, PAGE_SIZE);
                 break;
             case R.id.ll_search:
@@ -166,6 +172,7 @@ public class SearchActivity extends BaseBeiActivity implements View.OnClickListe
     @Override
     public void onSearchKeywordResult(boolean success, String message, List<GoodsBean> goodsList) {
         dismissLoading();
+        mIsLoading = false;
 
         if (!success) {
             ToastTool.showShort(message);

+ 17 - 0
app/src/main/java/com/itant/shibei/ui/mine/fav/IMyFavView.java

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

+ 106 - 0
app/src/main/java/com/itant/shibei/ui/mine/fav/MyFavActivity.java

@@ -0,0 +1,106 @@
+package com.itant.shibei.ui.mine.fav;
+
+import android.os.Bundle;
+
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.itant.shibei.R;
+import com.itant.shibei.base.BaseBeiActivity;
+import com.itant.shibei.ui.home.goods.GoodsAdapter;
+import com.itant.shibei.ui.home.goods.GoodsBean;
+import com.itant.shibei.widget.bottomlistener.OnRcvScrollListener;
+import com.itant.shibei.widget.decoration.CardViewDividerItemDecoration;
+import com.miekir.common.utils.ToastTool;
+import com.miekir.mvp.presenter.InjectPresenter;
+
+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 BaseBeiActivity implements IMyFavView {
+    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<GoodsBean> mGoodsList = new ArrayList<>();
+    private GoodsAdapter mAdapter;
+    private boolean mIsLoading = false;
+
+    @InjectPresenter
+    MyFavPresenter myFavPresenter;
+
+    @Override
+    public int getLayoutID() {
+        return R.layout.activity_search;
+    }
+
+    @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);
+        int dividerWidth = (int) getResources().getDimension(R.dimen.margin_s);
+        CardViewDividerItemDecoration decoration = new CardViewDividerItemDecoration(dividerWidth);
+        rv_search_result.addItemDecoration(decoration);
+        mAdapter = new GoodsAdapter(this, mGoodsList);
+        rv_search_result.setAdapter(mAdapter);
+        mAdapter.setEmptyView(R.layout.view_empty, rv_search_result);
+
+        // 加载更多
+        rv_search_result.addOnScrollListener(new OnRcvScrollListener(){
+            @Override
+            public void onBottom() {
+                super.onBottom();
+                if (mIsLoading) {
+                    return;
+                }
+
+                // 如果到底部了,而且不是正在加载状态,就变为正在加载状态,并及时去加载数据
+                showLoading();
+                mIsLoading = true;
+                myFavPresenter.getMyFavGoods(mCurrentPage, PAGE_SIZE);
+            }
+        });
+
+    }
+
+    /**
+     * 获取商品结果
+     * @param success
+     * @param message
+     * @param goodsList
+     */
+    @Override
+    public void onGoodsDataCome(boolean success, String message, List<GoodsBean> goodsList) {
+        dismissLoading();
+        mIsLoading = false;
+
+        if (!success) {
+            ToastTool.showShort(message);
+            return;
+        }
+
+        if (goodsList != null) {
+            mGoodsList.addAll(goodsList);
+        }
+
+        mAdapter.notifyDataSetChanged();
+
+        // 请求到数据了,页数自增
+        if (goodsList != null && goodsList.size() > 0) {
+            mCurrentPage++;
+        } else {
+            ToastTool.showShort("没有更多数据了");
+        }
+    }
+}

+ 50 - 0
app/src/main/java/com/itant/shibei/ui/mine/fav/MyFavPresenter.java

@@ -0,0 +1,50 @@
+package com.itant.shibei.ui.mine.fav;
+
+import android.text.TextUtils;
+
+import com.itant.shibei.base.ApiService;
+import com.itant.shibei.net.RetrofitHelper;
+import com.itant.shibei.ui.home.goods.GoodsBean;
+import com.miekir.mvp.presenter.BasePresenter;
+import com.miekir.network.core.base.BaseObserver;
+
+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) {
+        RetrofitHelper.getInstance()
+                .getRequestApi(ApiService.class)
+                .getMyFavGoods(pageNum, pageSize)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new BaseObserver<List<GoodsBean>>() {
+                    @Override
+                    public void onSuccess(List<GoodsBean> result) {
+                        if (getView() != null) {
+                            getView().onGoodsDataCome(true, null, result);
+                        }
+                    }
+
+                    @Override
+                    public void onFailure(Throwable e, String errMsg) {
+                        if (getView() != null) {
+                            getView().onGoodsDataCome(false, TextUtils.isEmpty(errMsg) ? e.getMessage() : errMsg, null);
+                        }
+                    }
+                });
+    }
+}

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

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