From f4763d87eda2a65b5516f737a65cefb05f94489d Mon Sep 17 00:00:00 2001 From: gongzelong Date: Thu, 29 Feb 2024 16:57:18 +0800 Subject: [PATCH 1/7] aaaa --- .java-version | 1 + lib_common/build.gradle | 2 + .../java/com/sum/common/model/MercariModel.kt | 20 ++++++ .../java/com/sum/network/api/MercicaAPI.kt | 11 +++ .../com/sum/network/manager/ApiManager.kt | 2 + .../com/sum/login/login/LoginViewModel.kt | 1 - .../sum/main/ui/mercari/MercariFragment.kt | 63 ++++++++++++++++ .../main/ui/mercari/adapter/MercariAdapter.kt | 46 ++++++++++++ .../ui/mercari/viewmodel/MercariViewModel.kt | 31 ++++++++ .../src/main/res/drawable/badge_soldout.png | Bin 0 -> 19895 bytes mod_main/src/main/res/drawable/bg_exhibit.png | Bin 0 -> 3183 bytes mod_main/src/main/res/drawable/ic_camera.png | Bin 0 -> 894 bytes .../src/main/res/drawable/icon_comment.png | Bin 0 -> 756 bytes .../src/main/res/drawable/icon_launcher.png | Bin 0 -> 2584 bytes mod_main/src/main/res/drawable/icon_like.png | Bin 0 -> 946 bytes .../src/main/res/layout/fragment_mercari.xml | 28 ++++++++ .../res/layout/layout_home_mercari_item.xml | 68 ++++++++++++++++++ .../src/main/res/menu/bottom_nav_menu.xml | 5 ++ .../main/res/navigation/mobile_navigation.xml | 6 ++ mod_main/src/main/res/values/strings.xml | 1 + 20 files changed, 284 insertions(+), 1 deletion(-) create mode 100644 .java-version create mode 100644 lib_common/src/main/java/com/sum/common/model/MercariModel.kt create mode 100644 lib_network/src/main/java/com/sum/network/api/MercicaAPI.kt create mode 100644 mod_main/src/main/java/com/sum/main/ui/mercari/MercariFragment.kt create mode 100644 mod_main/src/main/java/com/sum/main/ui/mercari/adapter/MercariAdapter.kt create mode 100644 mod_main/src/main/java/com/sum/main/ui/mercari/viewmodel/MercariViewModel.kt create mode 100644 mod_main/src/main/res/drawable/badge_soldout.png create mode 100644 mod_main/src/main/res/drawable/bg_exhibit.png create mode 100644 mod_main/src/main/res/drawable/ic_camera.png create mode 100644 mod_main/src/main/res/drawable/icon_comment.png create mode 100644 mod_main/src/main/res/drawable/icon_launcher.png create mode 100644 mod_main/src/main/res/drawable/icon_like.png create mode 100644 mod_main/src/main/res/layout/fragment_mercari.xml create mode 100644 mod_main/src/main/res/layout/layout_home_mercari_item.xml diff --git a/.java-version b/.java-version new file mode 100644 index 0000000..2b689ad --- /dev/null +++ b/.java-version @@ -0,0 +1 @@ +11.0.11 diff --git a/lib_common/build.gradle b/lib_common/build.gradle index b077bbd..fbad280 100644 --- a/lib_common/build.gradle +++ b/lib_common/build.gradle @@ -56,6 +56,8 @@ dependencies { compileOnly rootProject.depsLibs.aroutreApi kapt rootProject.depsLibs.arouterCompiler + compileOnly rootProject.depsLibs.gson + compileOnly project(path: ':lib_framework') compileOnly project(path: ':lib_banner') } \ No newline at end of file diff --git a/lib_common/src/main/java/com/sum/common/model/MercariModel.kt b/lib_common/src/main/java/com/sum/common/model/MercariModel.kt new file mode 100644 index 0000000..c210d25 --- /dev/null +++ b/lib_common/src/main/java/com/sum/common/model/MercariModel.kt @@ -0,0 +1,20 @@ +package com.sum.common.model + +import com.google.gson.annotations.Expose +import com.google.gson.annotations.SerializedName + +data class MercariModel( + @SerializedName("id") @Expose val id: String? = null, + + @SerializedName("name") @Expose val name: String? = null, + + @SerializedName("status") @Expose val status: String? = null, + + @SerializedName("num_likes") @Expose val numLikes: Int? = null, + + @SerializedName("num_comments") @Expose val numComments: Int? = null, + + @SerializedName("price") @Expose val price: Int? = null, + + @SerializedName("photo") @Expose val photo: String? = null +) \ No newline at end of file diff --git a/lib_network/src/main/java/com/sum/network/api/MercicaAPI.kt b/lib_network/src/main/java/com/sum/network/api/MercicaAPI.kt new file mode 100644 index 0000000..6704b40 --- /dev/null +++ b/lib_network/src/main/java/com/sum/network/api/MercicaAPI.kt @@ -0,0 +1,11 @@ +package com.sum.network.api + +import com.sum.common.model.MercariModel +import com.sum.network.response.BaseResponse +import retrofit2.http.GET +import retrofit2.http.Url + +interface MercicaAPI { + @GET + suspend fun getFeeds(@Url url: String?): BaseResponse?>? +} diff --git a/lib_network/src/main/java/com/sum/network/manager/ApiManager.kt b/lib_network/src/main/java/com/sum/network/manager/ApiManager.kt index ccbd9da..6225e32 100644 --- a/lib_network/src/main/java/com/sum/network/manager/ApiManager.kt +++ b/lib_network/src/main/java/com/sum/network/manager/ApiManager.kt @@ -1,6 +1,7 @@ package com.sum.network.manager import com.sum.network.api.ApiInterface +import com.sum.network.api.MercicaAPI /** * @author mingyan.su @@ -9,4 +10,5 @@ import com.sum.network.api.ApiInterface */ object ApiManager { val api by lazy { HttpManager.create(ApiInterface::class.java) } + val apiMercica by lazy { HttpManager.create(MercicaAPI::class.java) } } \ No newline at end of file diff --git a/mod_login/src/main/java/com/sum/login/login/LoginViewModel.kt b/mod_login/src/main/java/com/sum/login/login/LoginViewModel.kt index a76a7e0..567904a 100644 --- a/mod_login/src/main/java/com/sum/login/login/LoginViewModel.kt +++ b/mod_login/src/main/java/com/sum/login/login/LoginViewModel.kt @@ -2,7 +2,6 @@ package com.sum.login.login import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.liveData import com.sum.common.model.User import com.sum.framework.toast.TipsToast import com.sum.network.viewmodel.BaseViewModel diff --git a/mod_main/src/main/java/com/sum/main/ui/mercari/MercariFragment.kt b/mod_main/src/main/java/com/sum/main/ui/mercari/MercariFragment.kt new file mode 100644 index 0000000..a0e0831 --- /dev/null +++ b/mod_main/src/main/java/com/sum/main/ui/mercari/MercariFragment.kt @@ -0,0 +1,63 @@ +package com.sum.main.ui.mercari; + +import android.os.Bundle +import android.view.View +import androidx.recyclerview.widget.LinearLayoutManager +import com.scwang.smart.refresh.layout.api.RefreshLayout +import com.scwang.smart.refresh.layout.listener.OnLoadMoreListener +import com.scwang.smart.refresh.layout.listener.OnRefreshListener +import com.sum.framework.base.BaseMvvmFragment +import com.sum.framework.decoration.NormalItemDecoration +import com.sum.framework.utils.dpToPx +import com.sum.main.databinding.FragmentMercariBinding +import com.sum.main.ui.mercari.adapter.MercariAdapter +import com.sum.main.ui.mercari.viewmodel.MercariViewModel + +class MercariFragment: BaseMvvmFragment(), + OnRefreshListener, + OnLoadMoreListener { + private lateinit var mercariAdapter: MercariAdapter + override fun initView(view: View, savedInstanceState: Bundle?) { + mBinding?.refreshLayout?.apply { + setEnableRefresh(true) + setEnableLoadMore(true) + setOnRefreshListener(this@MercariFragment) + setOnLoadMoreListener(this@MercariFragment) + autoRefresh() + } + mercariAdapter = MercariAdapter() + + val dp12 = dpToPx(12) + mBinding?.recyclerView?.apply { + layoutManager = LinearLayoutManager(requireContext()) + adapter = mercariAdapter + addItemDecoration(NormalItemDecoration().apply { + setBounds(left = dp12, top = dp12, right = dp12, bottom = dp12) + setLastBottom(true) + }) + } + } + + override fun onRefresh(refreshLayout: RefreshLayout) { + getFeeds() + } + + override fun onLoadMore(refreshLayout: RefreshLayout) { + } + + private fun getFeeds() { + mViewModel.getArticleList() + } + + override fun initData() { + mViewModel.mercicaListLiveData.observe(this) { + mercariAdapter.setData(it) + if (it.isNullOrEmpty()) { + //空视图 + + } + mBinding?.refreshLayout?.finishRefresh() + + } + } +} diff --git a/mod_main/src/main/java/com/sum/main/ui/mercari/adapter/MercariAdapter.kt b/mod_main/src/main/java/com/sum/main/ui/mercari/adapter/MercariAdapter.kt new file mode 100644 index 0000000..ec142ce --- /dev/null +++ b/mod_main/src/main/java/com/sum/main/ui/mercari/adapter/MercariAdapter.kt @@ -0,0 +1,46 @@ +package com.sum.main.ui.mercari.adapter + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.sum.common.model.MercariModel +import com.sum.framework.adapter.BaseBindViewHolder +import com.sum.framework.adapter.BaseRecyclerViewAdapter +import com.sum.main.databinding.LayoutHomeMercariItemBinding +import java.lang.String +import java.util.Locale + +class MercariAdapter : BaseRecyclerViewAdapter() { + override fun onBindDefViewHolder( + holder: BaseBindViewHolder, + data: MercariModel?, + position: Int + ) { + holder.binding.apply { + name.text = data!!.name + numComments.text = String.format(Locale.US, "%d", data.numComments) + numLikes.text = String.format(Locale.US, "%d", data.numLikes) + price.text = String.format(Locale.US, "$%d", data.price) + +// Utils.setImageFromUrl( +// mPhotoImageView, data.photo, +// R.color.dashboard_background, R.color.dashboard_background, +// Picasso.Priority.HIGH, false, null +// ) + when (data.status) { + "sold_out" -> soldOut.visibility = View.VISIBLE + else -> soldOut.visibility = View.GONE + } + } + + } + + override fun getViewBinding( + layoutInflater: LayoutInflater, + parent: ViewGroup, + viewType: Int + ): LayoutHomeMercariItemBinding { + return LayoutHomeMercariItemBinding.inflate(layoutInflater, parent, false) + } + +} diff --git a/mod_main/src/main/java/com/sum/main/ui/mercari/viewmodel/MercariViewModel.kt b/mod_main/src/main/java/com/sum/main/ui/mercari/viewmodel/MercariViewModel.kt new file mode 100644 index 0000000..7d042db --- /dev/null +++ b/mod_main/src/main/java/com/sum/main/ui/mercari/viewmodel/MercariViewModel.kt @@ -0,0 +1,31 @@ +package com.sum.main.ui.mercari.viewmodel + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import com.sum.common.model.MercariModel +import com.sum.network.callback.IApiErrorCallback +import com.sum.network.manager.ApiManager +import com.sum.network.viewmodel.BaseViewModel + + +class MercariViewModel : BaseViewModel() { + val mercicaListLiveData: MutableLiveData?> = MutableLiveData() + + fun getArticleList(): LiveData?> { + launchUIWithResult(responseBlock = { + ApiManager.apiMercica.getFeeds("https://s3-ap-northeast-1.amazonaws.com/m-et/Android/json/all.json") + }, errorCall = object : IApiErrorCallback { + override fun onError(code: Int?, error: String?) { + super.onError(code, error) + mercicaListLiveData.value = null + } + }, successBlock = { + if (it.isNullOrEmpty()) { + mercicaListLiveData.value = null + } else { + mercicaListLiveData.value = it + } + }) + return mercicaListLiveData + } +} \ No newline at end of file diff --git a/mod_main/src/main/res/drawable/badge_soldout.png b/mod_main/src/main/res/drawable/badge_soldout.png new file mode 100644 index 0000000000000000000000000000000000000000..f0306f2ec96c80d835bab466cf9198fa2e3e6154 GIT binary patch literal 19895 zcmV+KKoGx)P)D{3=#wZ0TB=Z0Rspkg5)4!a>vT`*S$T1!1NGi z&}FL6_t+p)Jsqpwd+xdCeuvr8;e0@$(pe0{xHkvFVGB$Pu99W;by;SP0|!4Fln2i5 zia&JCSmlfVX;G@#(LSS9c8#bs3 z6AXtrTjZE$0$Ivs9LI=`OL~Mos;|-{2VgQ(1(#BqdRgz(=J`L{Dyp zW``8Ty{_A9Rf8GG3+zBevP*fMq35=je|I_L&8bXfL2#mC$)2uuz+j-W@?`Ewjdo*s%d13oq5#@nL8Z&pNl;vdxc zjlf5FMy6&#BBEsh&vy|;_F>V-ALm{M2zrz!KyN#ssTMQE)a^b358o+S61cP0DtUSY zKFZTkJpsC^IlLOyu8aja#e?+hHAbqvhbTtEA<^bI zQeJ#`&Tj-h>PV+NEwgmoh~6+ACXui%6FKgQV20F=VHrM|zCqZd>hvj2*P1kgS)qm# zy+IJh`TT5L>A<_P#4Z;(_vf4lj{VnFmm%;`N7jYF5`!}fRMk>!hU+8?+*83E;dnaj zMb4u<0D9X6x|*=(Se)>Rz&o=<#sPs(p5KoB*Pi73|Lk3xCfMQ~zHnh{-Y4H52ugSI zJQMmmFND8UF63>)1nJo0K|a47M8}T-CtMD|ad=L6G^#f(W_u!Gf5h0<2R^^BgBL`4 zZrk?X`&#}tz_%=5LmBjhN2Ry4&0ApeGyke@ZQI;g$qGIq$b3t$+98nh9yAr$dijuX z?TrxZbQ7?CKiH+E5E(NJSf3wH2#F=oK za3#RSMc$_0>5*`XBk)mwPf(voK=k_`pm4wkt<80-@5{&!-Nws8wr9&MEejlXF3-0< z3W8mGfWQ64`;Fe^wxf?lI*RDqs%K=8U7fy>OSeg@#) zH#&7PM8}T;yR-yhU)MmN^t~~4i=E&`_OA=P^OGX8$#a`I@`?@+_^7{3W@#yGy#GN# zU-$dflE^-u*{1P%Y{i0==U`9XlM8P~5W#oZl@RQ4JBUr2?f3rih4UdY;uFwUET^TZ zfcg76715JZSWTGU+7`U!es{A1iWBA7Js^Jsp5q97)ZqtxNeL8>9s{Lg#+<^&%6kQ~ z0ynTMqtKbH7sGnPpcOdcNo^tH_Paqo<<$M&-5mfSGI|6gX3ung&jd#C{h0tp)rqKH zH(;${LO&yJjt&I4VnK3fiRF=gdL!^rhfP)_0>z`oK;giFO&K-zh%ZCwDddInz@z^3 zj%fn8Q9akBDFnOrguqqTBqR0eJ|9wkIerX8CyfKAtP~hoaqlnViBpH7deeq-&47V! zApfo;IGg-Aaz#CT-8jJ!_^8^0&y8-iwd-KV`vZcJsZ(wZG{|{K$jNC#>*;MTlHQ?Z zmTYDw_`BQ;!Oq?2g6sYin>Po_KYSOgty}2gErT`pbqe&B8`Nv6GhL6wd&?nZzO1m0 zW7oZPCa3zGg^#rkHtAqQ! zSPabdYk>`huX217bs7{6AKpm+W%>QS?9kmp(}Fxt_mOqq z7+=33_&ePM!7Hu?My@{ZZk3i$Gc?xc+nXUAM|arj%a?)^k74=ck;;1N>u85n)fvt3 zVjoGc)^P3*lU=6(>bi{|0v~nI(l%{|($7ElmkuA+Szydwp@uofF&=M3;^;c?O`Ahr zpLc-I$=&Y^Aolf42oL@cly(&OcL^5ImHq9r~}H_u>*E}GK7mvpMC*T^v4r{Mg>>87Xste^vzx%;CZli zZUH1@n(>=$msSe80&F z9LdxFXy{fS*0Co9vSf`T=^NX7Zmnp-joPoGi{$8l+Vv=99MT2Wii4>9Xj|70}?BLg`ERF zsIULB?5;qjbe|vx8_;q@FM^8t-e|zLZUfSZr$Btxm(<1>*kqoakt8ryt%S&=2@vXh z6WGxxL?(U)(FtS0Dk=n4QT|+rbw4BW|LV7MA^y!A@Lkxx%F_j|xdGy{zXJW2<@B*p ze}DSMvY||k>f=mS8X!x|Pks``uobBr52q**_^7>M?*e_-habti`uFeX%gcD&?-NgD zNW|mCi=fi?hSbw{?gpVQ-GR%>qCbmGnXtD%J;y<8>gT|Sg8TO*Fn(J_Bl>+8XDf-~ z7&=783-avuLnK-%5|8ko6wgr%-Q}70eCjK6q^n$ zG!ghHs>s}VpzquX#e)a8V@h{Ep4lYtN|t9i&vu=1=j^1KMn3y|2;FuUh%H*~J{0WM z9n?kh!HI--SJRMuyR~gAl)c>>81lOZD6J&BX!YgG+`-`s2)eU^eWjdv7AWVphxk`t zrXDmnnZ+^~WVCj|Xn-0>aV9RfYbc?2;uFKJKg_ zJaTBt!(y}M;J>;fII4yx<6i)JcOIt3%Jo5}W?sgz&Pzcb?2rW~?I4f9Pj}F-TMt`b z_?NW4Yu6hDwR~!*Amep`XPS9>^HfSASP=g7U9CuB6udr$OtRzF?>zSaf_&MeAP}lCj z*Kbg(JUc1tG}f+x=ob@H9#>919hCN$&|ST#15V87ADYR`izcA6`>)%5KK3UU_{kY9 z1~LfzbkeR5K7w`Kdz@C%=k-tBh-ad&UiSIm$$I+a1}7r1bsMr(vSts%aV}_MP(E~U z$_Se;s1Je8-D;g@Cn=)X#LvLkv@zxJj2^cG*RWC2iW!wMq9@WdYi%TIJz+V_^?nJy z@X4UFEP@_^pJs~xyd1XtYYAD;{TuS$ z`3R)b&a82SOg2hsOTL5X^eHKi2d}vv#N$p(dhOH{Sb_l7j_nX0mAXumZ_p6@r2gN; z1>Ai>Pi>1Wr#K$B-j0X0OGVaxOA+i+jziER@Y6}|*&bi{D{Ok~@zADw?z&T*@x_DLOIGt z*)LR{{wM@~ny}uzl}z|tT6aUo>-BHHo)8F$1AX;#kM;6`EQ##7MvW=xGkV+#Y%sX{ z7+GNTUv_nk7g)(=EOXsjh)%91&wkGNAiFoawq=^`%!F*ls!T`ib=V!SLOt(D*8ivR z%H!_zjm0jGCg5h%v~TtYxJ9y$2ZmJN*hqQ=ewv7E6e^oO6V~0>>7=4JU->YjaqcKz zUgpIN%Q9ZS5Zw0&c3COCrHqho>JD6fgBs_-8A+rrn7Rx8R3df=Y-a835E#V=Iw{kf zJ}u>O-}x7UOv*I(-Q}A`v^OkgZKPa(GOj^KMP?=je2lR>qDR&v@Y6wNNeP%m#jx$A z|2EkA$bO&=yU!M zI3zp*Kh0D+X)>(qd7E!_`}TL~b7#!RY+nBbK@l4`z@*)0L0m4?#S0-eYewoQ|LW^N zJobbd=fTNFsrZ~(kXW)P_2YNB8Tcm6Ql?}M`Z)vv%#9l$^4aK=$EBl>O&Yk7LCxcX zd4*%8ozP%nT;s0dS?9@6fLY_qP)N&g%+n+A(?`bEZSY5*zOdzqUYD~)+r9`j$Q&SN z_>SK_y-ioSkv@r#&Ele}01+h!b-%U32d4%RGAZvQe)gk=r5rSfXFh>Gn6-1cWMm0q zQ$7cM?V8k+fTqoXA=b$r{h}*F70rMZQH|~4*v`!X#aSRq93*YI9n9V!@Y6@p?|*>R z*IsvgWY{MkWi~Gu>&psU3Hi^aqGe zot*Nx?~=C4)LP`(-2us}NKfrG$gf`yMgMso%KE(G4k~7Hr>@69Pi}_IY>SpA zdfA56K^B}*KABNj8qwnkj=)b7IhF;n#oxn*JMJpjde5Ct`-8&tK>e({ITnI=A?yPV z#Ycg!udil-wObEhbMk8DgG2HRWESz+D6opF=GjTp64I&=1ff?PaDO5`2{xI zbDw|1Ej@0vS1p?v$P2wHDndhAX6eb%&7r9iQjJo1gF~sVAtjFGWe^^b+6PB$)f)U) zU0dS?R+?wuvI!y+$EJ?*-B|>2yR20M6B50<15(+$Z^6!o?t;irH`>=#I+%G0_Ds_F z#!jgA?3m8o$n(qtejluo6&^g>RqY5Awm3WjL=3gczMR1n4f*68*tY4JjHdOjWLbvs zVN?zD6_~-)eyg86q{2eG~o?Yd5 zpkr4^%>M?=O&e>}Fr0CpKmPSsZZzK!`2766S?#`V@#Iq>@zpfhyUGFKQGb*Crr>yR!HR(11u~mg z4}#Zs2H(XUKxo*o`ui&i?ei+1crt`;z7--9#zJJwFmNIfYHv^-l=WYhLv+gL5WJyt zmE-;nS3>OTnV|pl1MNU{$lzi*(3bs_68L;>y_!`5d031)BeNZdC3F~Xn$BAS&-^UO ztUETdxFCzbPczvzY<=-c!tGokvKZIgA#9=s5U!I>Lz`>*Xt%Or_8*rAB^ z`yr#}?I53V7L>mEUod`Oof`Udft7U!h7s<};X>f+)vGcfWc0iPib$J5vVdFNY@yn; z4iCm}tEfFPd91y!AP&#zJ-!AP^p+OW=V=z-Pn5Z-0mZSBPL|k=or1Lt0F|&L=sOWx=*8 zHdUbz_~{{HbsPSAHmtk3M~fZLJoSe2>knT93bH$~g1~##_l9g%;#;LKjI>*1kKW#8HCS%&DNQT#@oIg57!o=MF-LYCr5)HgNUwX?LuBW$xNZ z{e99I_NEQHVk*31n$G2ZANN5hHy9CQL<<5xjbue4V3wA_&H*3hZ@%k}UhIb7z6|6B zpA<7QvKYGAV$sku(vPercU# z`i9Zt20JRQ!c`17&-r}pR;FTC6)tNWnZg|YUm!b?fK8A59~b}e`zw`@{Ey7mjn8G$ zVZn;{)MsQs)<0eVp`d=syO=w7Ky=ash<`l;EH^q%64gnTVJbdQE@%&-t~Z0wyk+VW zHopL}9(xLko`2G%tyTrLB*&llb}q!`%>{qEi>gNXH+BJa$#b?gH(HCA4%iog#Y2{jOBinxiF*eu7V#&F`@3 zp@&a5mj5s^qab6n9FWc>F!Ma@NrjPVLa^Jd)c7lv;&Z=-!vA{!B0~p(U0g`>?(`-} z$;D7phxnAwVV8TK_&2kweJc5sQz6*3M=~{&@^fV%GU`*X!sS(u2qI)Z`5Xu>kD}`g z`+ZBKx+pU1_KZcSKBbzd1#g8ai{+@xnj65feocXQz54=N(K8CJS=o7a{<@B?vPEBP6f;aVq;(tD~J0-MdEJ`Bz z=!DNeKIZ}un>MZT`(lfhkk|ViTGd0mY^+^7=q_NgUqEQw43rL6fd7JaDeLyhcU%7P z2VniNHR)#QVc1(X=$g(bmu?qhEg^HviiWqTuw(YT2M2 zL#DRr81Yypa0T^2KK;y;X_2rCM<*UXv`tTL)J;+@W$*R_p?81a^XgT(i*nYvAhkU$ znU7bLD!*^-+z#a*y-TZm_T7O?#ARke=6w%Auv-r>w{CTTZvdN{M`r;0tGp@y_(O=# z{IcqEdMI^6&SDqz-)UvhSELMOmMn5ATTx<(tgpMm9R8uEZ&VdZCr@FwJo3mXiJ4PB z3g#%|eK~=4kj9M~9NhrHjhOlRRcr0l70W><8>VXFV+MvLrXdW;R5l z_G5-&U#(=wQ)G!%8Eiy?5q`R<{Oj4Uv)|iIj5Vw7_1Dk6+t;E&9(A%z^Aa>-=}f9; zm=wEC^~&9?e9cZZlG9Io^(Ckmcc6>4`^tCD`4DN=5{wPMr>vGCl|PY@pVE@fz}45) zd=gVs2&L|9BQfWz+4r74h-jWr2HP12b&v~$s^a%WPlCg6q6pb9^ zFP|{Jlb}YQ^fxOwE?H}g7Xmf@awBZMansbF-I`T&5ws=|ekF-WI*54cqyj#9Zspwb zD;8fLPD^@w@Z%7W<>F*>7-+H943esVtW)Ax6$4@Y71MpO&#j zpA2c6nD_PFN_L<--!RWl(>Hh}R2K`U{3+)~{tREs)65079gor4{8YdvJ8$`hjlkHj zHf5DiMmkC%76_G)KeZpLGQOrYDWqW9YL2S)$Ez$wnl2h9mIPMv?EngQ7u$A+~Vg1yV@qmD!};RjkOdr1Az? ze~>`odFm@;$K$lQ_ukQWHpu5*0MYTIfvs+b?LktDZ0<6*Z3RdL{JeTKbFK8SEkZ>f zSjFM^nFU;lXivj z8D~?6Owz@wc1rynS(`V~9DKSXKWT@+B-EHO%rxzHMZdH{5|f2e4kmB#Qcb5ftFB%R z+g^N0Tzl2ko%ym|Gcp?Iy&>>yQ@SAQSnD5wtiWZg$O*K}(yNTub-HPYE>KpMDv||C;siRh3Lf3Ksn>As?EM#g}UEHH$G`U zE;*>?BYS?2j%Ctj=&72RYpYh$U9kJwBzrxgPk!Z2p=z*0-S51g$lF^bvf0>S5cH_@ z0)F(nMX=-T{yF-uzuY2+OhzUI-RL)X<4wRfXmDU)2m(mQ9#3!n%dUd5ci#ei z`O;+cTw7?m#35#7${A+^8>pJP5gIpv?5F=pn~zvqw&bJ}xwGEzXZxNLGyKgxc@>b0Ti1Z$cu?ARaHHm@A#mk2zy^bd zKH}%*f$yRYV3n1E@#~7D4MHuTPk!Gj+(~opsT!Bi=gcnv**#|N*iKV1q^bDs1y_>3 zF?0%hzClCCxa$GPyz^eVv8u{=7mY$`pI5~;$%XPr~) z>J(O%A^XuM>F(3m_%XHidZ*o{#*GH?77cZ`82FsrYM-b4(?Q9ZiQ>(!Q@h&>nof~svct@X_MQ}w)=46pjP{ZA zsB{88nJH{}=DASp+i!Y^X8hqmZr0JBwJj#w|J|sUbEDp1=WYN!wy~?qjl(Ov8Fz;H)2gIX<8fJ-S(<(h2xBX`45DuCI9L zr&rjkS3DTZ$!yPX6}~rKOx4HZz=cBKzrGU$Z|XtQFx8^aGQrrm0TT1)f%fxHNr(~# zXXk)?=D8HG)op$vQDf!9H8{)!#^zc1gEWH)glhatUm<5{V^ko@)YQV>;w0$P})1zv8er@S+{{H}AF*mAf z54o@OKD3CQM2%CYLGjR`Cs-TT{zHHdezC2*3rAMo_zLska6psARcw}e($d? zUj~se!)e*0lTc}hxZ8`q!mW~T*%~tMybqLfFR1o$NSR~N6AvYypRHZVrsICseDju& z{nQH}9e+Zt9!qxzvhok!0rk82$pu^w!M?(^7)pFAk^dbY9F)g;}0M*>=XB~M1Wcu77)|31hAP|5bSXW1h2b+=J*dq zW>FDDr%r;{r14-E6?)IMn7l_D%5}{iY#Qc3&eT^a*+F-##?%ce%~Cq0pMMU8g9gj` zn%}znazc-0Hm`p|IxJX`=vq1R9PpiYVf6!NEDDi{;~+{vNbHFv`G9E{TE0kTN^YbK z91o#xJyYI~tP>=@nGNQaO|>j}bZDO4iA13M?KePOG#>&TyMl81naRcB{m9s~5#qCF zLTu)Au(l>&hnHZV^u3`y;3w*a^QO!>i+mYmFqD#&SO|Mmx&U9>vPRe z7A@((Qspk84Derl1C+hf`|#Ab6FUd@rhUH{^ySNFhbrlebEw%Gmz|SL&$wT#RaOGV z=FOn5Tmi=Kzkyv=N`J3bi^xY{L{H9R&46Ww&ArJw)})}q#2A*Z$k8L|QRxDF_k@rC zvJy7ld*5+vwCwTBMmb$rmIURC)nl{rz`Xck7*jP50i@(^|Ip>tMam%YrNvqSIJ>4g3#*4z!<9zVy2Ja4dxar$(ug|#n zBCs_b&2LcN2R^+7xa3n84Ija7>D8;9xpdLEQ2mS{a+dFSTG@fu!R{zr|MeG$Oc;~$ zIH{{w&b_e4Q9g;HiM4QS#fO*ZAOfIFotY-$5q(gcQ7+DZ z?w>C=>DRYdYTO86k4hilGZmYF%1d=Ap0K-c0y8;~7kW($$W1(%r~eDy6XVW`VqZ^( z#E;*nJRa(DGcBtn8YzvnmgZ?Y2Q@mXbCin<0mcf0TC zX;Xg7?a>{CdiC%FLZu1tD;z7egwDjG#(A<|80Gh|BV~~}l{U8UB11Iw@K?3aZ_53u z;&JLVPj}1i%j~Rd2zKdC{o`wr7h@PU*(R{M=SHOjJ^3S18eI{Mm=7~8+H`6*c<>kb z58P+bDkFx$4+(WdiT^7v1U;rhG_1FjgUTb4%-$jhOr|IMY?6VEMAo(q(kZ6_->e11 zr%XKTWreh()DKG_K6f_wJ6uuaIQd!p>zSbaxcJcP*I9;k%}V{mc%fAJINU+ih#Q58 zxbdNU=GpJp>(X_5sNDtl;h@qC_zpFI0!_DbIfl74nC-hy5ZP9qZKzBdc93QrjhaB9 z(@hY#=6X8Vk;Wbx>BJ--M*ChelDg4$c*Lh5pLq^&85w&Y76b@(zZLWqOLv>49m@OQ zs%fBNm6ap(_xK7d({@j9b__IX)jxQ2n;#oK_pGNIu%Hn5`&?9vTbvRGK*g@3^JVH&{Y<%4+qNhuCGpfCNw z9SzbG_?7JiwQ&45)t2s4uI|{S&CHo!WOwR_ut%j2@GGPGcvy$Xu4p4IVZA8_<>`Ju z-`PDRr$tc*F#}t&uzK*`e2WX-{KLP9OE*guLwIyGWtz=efd86~V5eBzO$mHW2kDHn zL2TZl$}#olWnk^v=??5%T3r}S#W`-o6Xnse#H&UquS0`3`+V5&U;iu;>et5<4k|r> zPc8xy)f>7Av6$sIZRSB=Zg5U8Q|`qHY;HPL@6m?cMTHRlbWqCUWRp~&W0#thN*?Ho zlO;&ZnFWbO3sVm^9Xo^2stq{REyPyBUQGb+zRt|s?@oC6V8v^4u8 zUhjzo-#~o+ywu>mu`7tj9G9|`vUcB`3t&To@Q6=R4k*OlIMn^tB&e$yg-JImuAn~T z{PSht-M{yh{@W^u&-u!;O~O+}^)Bt5L}}z(H>$rr|K-=ZH+}!TCArXxeSlwi zuB%a_FfH?{D-(QXCQ<_B8Sw{V8MzQN)q+I1+LYzlJAIkH`*|L6JzHj3 z6JWSd*H^88=#yN3L6yT9x8DPWD_2nO zd-8?S6wXn{K=7vS;J@(Vqz!Qjl?{9!w1x9M7<~ZP2q-|haP>j>07;ZxX) z$rwPpPI>JUAfp%AJVol|35@rAgB4wuXdV3lz()W=sX&rI%5_@2gO!n*b6CH>&TMG(xLJb~p^BAHE0iDHD=y4LxY7u)DpW zYW)=5^vCPXhYTI>Kl@CJCFW*mA%RLK;1l+l7O=6fc`DDq{lQGB3&$~jPqr5%kS7%^ zvJ7l62tv~qAT)3J=gwHu1Y_fRFxIYdL0Ar87za$pkeqsa>Ll>Dzm)pOSBdhw-VBKa zbHUoN-5nsr!$^DI1TkeRAMg$sYgQ#c1CK@a zG@^HLZy5GgHDSKXHEBMi>GLn`^tC-1Sd8dV=>q&@o<6xpCtRl26J+l0K&JFC&&&Bq z(0h#ZZX{1CW=MKPIlmok;U}GZ3h<w+yZ{1Z@4Ka;jU-0!$oUJlU-W9dS(wQD=D zir;e!wB#ePZO3*a`YBM*>|LoKe|EFS9<{{%q_t2ePXj*|vu@`(<{F=my_RJe&Xd(Q zwgYw|2J-1=L+F+}K|bZsH_%XHvTJVu>BN(vwD*5OTedVcR7pC;oi2sP3cUr#4(jG4pfvm=7>`)Y`O@i~NU>R!#L=RowU8FXMUH>{<E7?4Yv%`J}3Yi_oMg81C;Hzx`VCTs~QYAgQT67nI4$ zI!V)PSO>EE8uxY6RG0q@CB0vP=-3h9gv*l=y@z(tR{Gu;s=h?r^yE9MXi5^g^-dSAw^u(Vl$L_JXdy&rPICc00pj1x27S$HV(Jfk z{RUMkUUrX^iVvjYPlm+zi@+``b)$N|N|aBcXj{|3cix35X9{*S3ffQKA6%4A-VZTh zbN`mlJ|D84dLBX@JA+xY3v@Sf-xF%&H5*&E0N=PNs6Q@&(l`DKI(Z&k^d)Mt2S?f__uR_YtSgAbufj# z8%2|f7wzYzRUK|=^GDiDB5jXoY0G7rSbmandd*0|L7z0v#!2M z=K^(W@fjn06h`=mLvBRuzxsL*>Nlu*$c==HUwj7iWlQ%T^}3Lx9iv>}miB&y3?txg ze@V)_X58Epv>z6OwPjP48hv7Cpf6tvv9G4n^3Ht~xb$*}&zMSk)$UmXPd0@y{s8!| zy^-#ebWQCK$0_Gk8PGHAd`<=A6@J)CVM zQ78|~dzCr14Qy66ji{?c{_e4|0sU!7T0(vq-kE{tbCA zy_V9RVNWHNEP`GCcR!TA`QPMbFps4Mk_KlM=(@GKd|UBD+)1ZjbJVn{(+VDW$dZq0 zjaM%UmF_7Whb(S3ZI-e?gXH6Bsb&pI5=r@^v1%nmJ{t|0civkyh!15@SIYAD`=yLg zNxgpT^Ksy7cQJ@ZwW)HCAldobtOfWk=|CTAf6_Oshw#Xu)D8hm<4^A!5AB$vdHQI) z&{9G}t<1~;4W4**UGUsaPj@l!T#oB%4Z+|gFMh;2V=I^^u>i*jz24|y&LGHg^t~!Zm)|}qeCuYBIBzDZgEfo^jP&HQHFgj3JDrRjhHOZnU!ggpx7$q1ir zF4Cy?4eLUi)X|d`ebR9!LP?)jKwJFXUR5a7l7nMY!j{=jf7gQslO#cW)(i;U*ai4T zRc#vNlTL=j%xTHz*%wp<(3%F}k)ML>zORE>a7_I41B8ct0{YS)DG^zJ&|49GvJnYr z<*^NF+<2EMXgI9R(4mEBS&Tw?82Hp;z_dVUbrf~8^j+8<_T-7{;$FAU1Up zZE#+l^i3NfLTroY&30!x5qF^TUL)~j`o=7Gqxz4z<4+ru*{s>BdJo9H30@tt+gl_5qzRRwp(fGcS+{oE?@#Qp!&Qw=rLwmNWU=sEZfY z9#p&liMg{Nc>Rr4$AkQQU;{xgi8)zy;}XL{c=Rx8a3<_ia%o2*5Scg*q7%o0U9^kt z*7X|fD|~M(HD*jQMc-Tbk3F^^=f;kBHKI_S20n4JGz=H=S3u_dj{)aK#`{yK=k1{W z^gYtJMs_B+f+Co@XQm0!EMPvbX$9AwvOQ@0BUWXJVxubSJ z6A7~TOWZUgV@5#s|2>r)_jDcN^X5Q!*kCX>tfM8Cv^L*^>6=7Z{6{CJ;Pv3O9j4a1 z^Y%FBG1~_e3W1*r_Qc8ZfyW@!`KALdK$3gf=hJfVtN*`8?v(#0v2gchx+ z!=<)pL9Lp7kdi^$9jJ)$S{2~Ckfx1I9DDy`hAct+t1rQK>E$$qQTE}x$&OmY;#l!m zL|@^1qetUg)TrK%Yu0jDqgVc0=sWfpyaG`u&jX)S;J6WR#=Q?gXg_&uB4fjPNGw?h z`l?l+Enf0n;$!@xt;?#gp2;RnV!^+N|rY#VZemN*CbUY61csyH*c- z7nthLOCdV(GYWaDuyD7j*#RL<{NT5225r@^Nmt2zL^eLfCXG*;oz-w#zC*J*Y)UHw zl7pwaZ4UHWGFZ8!P#ZF~rheDye3Vg!=p=E2x zxb3c#ht2JOK-s|eA@R)|0MgOPg*Zp%ezV~j4kY7N%f1yyQ|Goa+ z@Y1q?&Cdt@}5o z-UP0>KIL&*_Gy`EwL6r&QyU-=iy4Cwod42#&%N+k^A84;i0%vsVUI$kDexT^_@uQT zY2v-FVx$>_8`(3y!;{M zLG1JKN&Di%)TxP7;pjguf$-=Nka273-nP;SCqdqu{h@rwN7O6dQ4@cHzXDuLMke^L zy#Yd9d+cTRu-6P_?rhqKgz>NkOwxhb0X>o^RHOPp<(%{SHtqj*5w_?G z(B^3Hopo;N4AHL(h zHWNVbrVk8>=q9g1Ff8mvFI)wr(zNC&-bT97D>%rOO} zFWUc|26@7oQ;{NJ0Q39n*iemOswco)1mWjXNh-Zvh$e>~n&6oiKkLU!gS)V#!U ziJMr?7xmf|9A@&cLa-mZ6|rx;K&??n2ekTbF(t3l2>IDT0fV#p@@xP?Bc>T}1k$^O zo9UY*Y()9g8jfajWHd%432E;onYH~M>U>RBdW|Pa>P&Tyy|$Vjz7*aaAiGag!Kl$B@I@mA2#mjQp`|o^i#oE0 z#F6@T)&MV4*IDN&IO0gYKKSU3=6Buw@4vlD&=<#xFd`!d#U_vC$IFlX&|hSsUKra; zl3b4AC{hldV*Z*+T}X6v&vO@2UB8yeDX7f(Wy`NE+{{R5*)M4Q%1WZtu>m(r+iPWn=JppQPO*Y+v@rorhs zEd=lgQ*9`;&H`s(15!qW#cPcLW0q#Gz0!Q_xjctd3l)VlCE!h`%l5g;W{bmrH}9z# z4`$8rMuIi31O3%^tI{HyYnhhfx?alD;|6@zr&d3bN$>C;r{%nFx|vao%2*LLZzDc< zGgnfr$UeRK;_ojvRJq^3MWQ0s(yXIAhmj5Kn_ZWlc9z;U4}?u{OzSHCu7-=LdB@u@ zvOR1)Ky>&RmznaaD=M0{KZ#HmDCcu94?6V}w!oqPT8%!n9Yqow|2e)<>*cw?JB)Z# zw79Xk)?Q7FTK;O`J<-zAX)>;K0vPJR!g*A$S^jdN2r|V-!jaTsf9@W~5snvT29D2N zH4$dvLpufD#Bhg$r5e)?=5;8j-{Pwj+l9WUTCA3%+l}(pX=94wbM&qF453l9du*=K zcD;xa?ZH;rSm0O@=IE~G>2Buc8?SlrEK0~qQ+uJEJKpt_NTy>-TR`avbt&$O# zb08dh7b9yW%pCUeJodF(@_Gm1RFlsaXX}Xl{!hj#wf+%JA%t(+@MxQvXNryf_wYfu zWiVHH?4i!~u>3`<%*%|9x{Pgta}X@%!)*HJyxb{8%>eaU{nf%~vQxf?pwc;sT-hh^ z2i3o3@m7`dI$`T}!CQ6G;UZ@4C6=BLgu!PR*_lgpj zl|@721G46omEqU)Nf!cp#A4%5r2cC}3i^b#`%-5+iaY+Y3i@kndFJ-`VpmQ<0RKGb z)C+!|S?z^iy*fA+-%**dIp!|M5NtU*|D?V8(~^rjbvPj> z+;f=1dh0l7docHfXkUyZct1#kKP1GPQOWO7v9d0CbuWTQSK}Eej){bUW$Y!?E6u=T3>lZ9;2<@K^0(X zzxB_~5H>KVV3NB>G&h`(Q+uIL)mY+q(lgQ2KMCZB$`=FbP1+mw`)0_>Wc&J(`x}X_ zpLLiPS7?i`s8@N!H9fTjuBtJne=g*th4fXY!g_V=-95RZgK=A9ss)PO8kVS(5pfZV zjR90wh-D&U#rfn4X}=S@+L&Z!&1=;- z78+OMfpFwuqgUGX*xYgPn~#2{xmLaPalvw}o;}^~do%}H~$JXR{5YI#LwZ&b*m(O@QTfa=y)mi2$Zj&i3$r6 zxTVk(Klw-8tv<#{6-Ix>$t}LAI=XG=7c+CBKYk5Ymm*)|F1vJDmY&r_SLzHqx7ur; z-;8oXJD9#+`OC$Uq_Y->tVN(rn@-c4 z%mMUA{46QRJyG7L72li0LqO6QQ@O?|=S;Mox@|LqG6h7wkN9%| zj0GrsD#O<6(0#F%XmV;0Vt`Ntz7m^_PJ(~eG454GUj2)TJ{!uq2E`JPsJ}-t1T*-L zx_BU@8;7cfDk7G~8^n`9!$UWE>rB()hZ+;Ya=nH~*OsBIG<;BCK_U%2%-uNBA#CC8LkWmDpGf1EeJg}GC7m~vf zuxv$s#YysD8|hF+7mj}id~>q!+sf=J1N@xrQ5{l~$G|p(EDysh;&Rgs6%;G%kv+We z+w+M8H@$RMrYUh8ovRbH$tyZN_Nt|V^}=Ay(1SPn`(ED`2jcEcVk zl`<{HCcmcvG39sv>)~#_yBhJYI{%!4e{7Msw1kZ7v1i8}awW5Zal8Q0pQcw|AbS1l zH%4&`^v<>)J6(-F##T`15Oto?lX+EdEO@xsH0+qao;jfh9EiCuN>jyN*F&G1C@6v5 zHEpc1PZ7YMEe4K|y$i`R{Bz`I`46-TtRYVY3|QU;n!NTufRgRJV6R{|d5!fXrwCnOyb( zwi_25{0}kb6Z>GGDJk+HNGc{Vxads}MH?of@foN0&l zUqyMBnbu?A+zzCck1F`#QixDC-E=k)&J%Vf=Q2=_2AhYp#-2k3RmWcHq}zgEd}^QfWOlt9*AJXBSV{cLQwE&pgdr~FS>dStRYSHd^9$OKo9T&779@clnXd+A zmLY1#>J^c_sF-f(u~~AO9*UzrB+JQbk5Ad$7hp^uwMm(n6|iG4zf^KJd7bX#?nn#D zqHxz3n)X>KdxqiD056Kq*1yJ(9yU;Co57c?!rQpG)lBC{0#~cV{vV@II?Im}<%>g* ztH|@#JYl7+GINPgoxkP+Q~Ps_7bi*xvk!OK&YE^H9eR~*)iXrz`67UR`%3H}?e4iV zF;rLzjz}CvOCn?5#g!G&thwECR4pyRTe-8WiRIa@t-Ic;e*UCP**80Mcciyd`AAjWX+x-qfxlKVMpelvmN~1wMI5C8gvM7j#%c1dZezxe@ heBc?6^#cZWNIY)$eBFDNN^lb!#2966SgG$4^*=_T9|8aX literal 0 HcmV?d00001 diff --git a/mod_main/src/main/res/drawable/bg_exhibit.png b/mod_main/src/main/res/drawable/bg_exhibit.png new file mode 100644 index 0000000000000000000000000000000000000000..1ec441457f2ba363044f2a8c9c50d123928eb020 GIT binary patch literal 3183 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 U+r@aQ1poj507*qoM6N<$f`1^mq5uE@ literal 0 HcmV?d00001 diff --git a/mod_main/src/main/res/layout/fragment_mercari.xml b/mod_main/src/main/res/layout/fragment_mercari.xml new file mode 100644 index 0000000..bddd0ef --- /dev/null +++ b/mod_main/src/main/res/layout/fragment_mercari.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mod_main/src/main/res/layout/layout_home_mercari_item.xml b/mod_main/src/main/res/layout/layout_home_mercari_item.xml new file mode 100644 index 0000000..4eb0a0f --- /dev/null +++ b/mod_main/src/main/res/layout/layout_home_mercari_item.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mod_main/src/main/res/menu/bottom_nav_menu.xml b/mod_main/src/main/res/menu/bottom_nav_menu.xml index 648cebc..0a0658e 100644 --- a/mod_main/src/main/res/menu/bottom_nav_menu.xml +++ b/mod_main/src/main/res/menu/bottom_nav_menu.xml @@ -21,4 +21,9 @@ android:icon="@mipmap/ic_navi_mine_select" android:title="@string/tab_mine" /> + + \ No newline at end of file diff --git a/mod_main/src/main/res/navigation/mobile_navigation.xml b/mod_main/src/main/res/navigation/mobile_navigation.xml index 099ac71..7fea3c6 100644 --- a/mod_main/src/main/res/navigation/mobile_navigation.xml +++ b/mod_main/src/main/res/navigation/mobile_navigation.xml @@ -28,4 +28,10 @@ android:name="com.sum.main.ui.mine.MineFragment" android:label="@string/tab_mine" tools:layout="@layout/fragment_mine" /> + + \ No newline at end of file diff --git a/mod_main/src/main/res/values/strings.xml b/mod_main/src/main/res/values/strings.xml index ef437ad..5f6b42d 100644 --- a/mod_main/src/main/res/values/strings.xml +++ b/mod_main/src/main/res/values/strings.xml @@ -4,6 +4,7 @@ 分类 体系 我的 + Mercari 跳过 %ss 短视频 From 6df936ba9d86ebcff6c0457f50aa02bd266c93b6 Mon Sep 17 00:00:00 2001 From: gongzelong Date: Thu, 29 Feb 2024 18:01:57 +0800 Subject: [PATCH 2/7] How to parse the data and render it in the UI --- .../java/com/sum/common/model/MercariList.kt | 5 +++ .../java/com/sum/network/api/MercicaAPI.kt | 4 +- .../sum/network/viewmodel/BaseViewModel.kt | 1 - .../ui/mercari/viewmodel/MercariViewModel.kt | 44 +++++++++++++------ 4 files changed, 38 insertions(+), 16 deletions(-) create mode 100644 lib_common/src/main/java/com/sum/common/model/MercariList.kt diff --git a/lib_common/src/main/java/com/sum/common/model/MercariList.kt b/lib_common/src/main/java/com/sum/common/model/MercariList.kt new file mode 100644 index 0000000..e1a72bc --- /dev/null +++ b/lib_common/src/main/java/com/sum/common/model/MercariList.kt @@ -0,0 +1,5 @@ +package com.sum.common.model + +data class MercariList ( + val list: List +) \ No newline at end of file diff --git a/lib_network/src/main/java/com/sum/network/api/MercicaAPI.kt b/lib_network/src/main/java/com/sum/network/api/MercicaAPI.kt index 6704b40..8139b42 100644 --- a/lib_network/src/main/java/com/sum/network/api/MercicaAPI.kt +++ b/lib_network/src/main/java/com/sum/network/api/MercicaAPI.kt @@ -7,5 +7,7 @@ import retrofit2.http.Url interface MercicaAPI { @GET - suspend fun getFeeds(@Url url: String?): BaseResponse?>? + suspend fun getFeeds(@Url url: String?): MutableList? + @GET + suspend fun getFeedsWithBaseResponse(@Url url: String?): BaseResponse?>? } diff --git a/lib_network/src/main/java/com/sum/network/viewmodel/BaseViewModel.kt b/lib_network/src/main/java/com/sum/network/viewmodel/BaseViewModel.kt index 2a5770c..7a2d806 100644 --- a/lib_network/src/main/java/com/sum/network/viewmodel/BaseViewModel.kt +++ b/lib_network/src/main/java/com/sum/network/viewmodel/BaseViewModel.kt @@ -67,7 +67,6 @@ open class BaseViewModel : ViewModel() { successBlock(result) } } - /** * 不依赖BaseRepository,需要在作用域中运行 * @param errorCall 错误回调 diff --git a/mod_main/src/main/java/com/sum/main/ui/mercari/viewmodel/MercariViewModel.kt b/mod_main/src/main/java/com/sum/main/ui/mercari/viewmodel/MercariViewModel.kt index 7d042db..574ca4b 100644 --- a/mod_main/src/main/java/com/sum/main/ui/mercari/viewmodel/MercariViewModel.kt +++ b/mod_main/src/main/java/com/sum/main/ui/mercari/viewmodel/MercariViewModel.kt @@ -2,30 +2,46 @@ package com.sum.main.ui.mercari.viewmodel import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.viewModelScope import com.sum.common.model.MercariModel -import com.sum.network.callback.IApiErrorCallback import com.sum.network.manager.ApiManager import com.sum.network.viewmodel.BaseViewModel +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext class MercariViewModel : BaseViewModel() { val mercicaListLiveData: MutableLiveData?> = MutableLiveData() fun getArticleList(): LiveData?> { - launchUIWithResult(responseBlock = { - ApiManager.apiMercica.getFeeds("https://s3-ap-northeast-1.amazonaws.com/m-et/Android/json/all.json") - }, errorCall = object : IApiErrorCallback { - override fun onError(code: Int?, error: String?) { - super.onError(code, error) - mercicaListLiveData.value = null - } - }, successBlock = { - if (it.isNullOrEmpty()) { - mercicaListLiveData.value = null - } else { - mercicaListLiveData.value = it +// launchUIWithResult(responseBlock = { +// ApiManager.apiMercica.getFeeds("https://s3-ap-northeast-1.amazonaws.com/m-et/Android/json/all.json") +// }, errorCall = object : IApiErrorCallback { +// override fun onError(code: Int?, error: String?) { +// super.onError(code, error) +// mercicaListLiveData.value = null +// } +// }, successBlock = { +// if (it.isNullOrEmpty()) { +// mercicaListLiveData.value = null +// } else { +// mercicaListLiveData.value = it +// } +// }) +// return mercicaListLiveData + + viewModelScope.launch(Dispatchers.Main) { + withContext(Dispatchers.IO) { + val feeds = + ApiManager.apiMercica.getFeeds("https://s3-ap-northeast-1.amazonaws.com/m-et/Android/json/all.json"); + + withContext(Dispatchers.Main) { + mercicaListLiveData.value = feeds + } } - }) + } + return mercicaListLiveData } } \ No newline at end of file From dac4ef2f0526e58140b5a1235f63f7c50b54bb47 Mon Sep 17 00:00:00 2001 From: gongzelong Date: Thu, 29 Feb 2024 18:07:11 +0800 Subject: [PATCH 3/7] Add Mercari Interview requirement --- Mercari_SKILL_TEST_2018.en.md | 53 +++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 Mercari_SKILL_TEST_2018.en.md diff --git a/Mercari_SKILL_TEST_2018.en.md b/Mercari_SKILL_TEST_2018.en.md new file mode 100644 index 0000000..8e709ce --- /dev/null +++ b/Mercari_SKILL_TEST_2018.en.md @@ -0,0 +1,53 @@ +# Task: “Create a Mini Mercari App” + +Given a specific hypothetical situation, implement an app imitating Mercari’s timeline. + +## Hypothetical Situations + +- Choose one of the three situations listed below: A, B, or C +- Specify which situation you choose in `README.md` +- The choice itself will **not** affect your evaluation + +### A. A sample app for training + +You are the leader of a five-person Android team. An inexperienced Android engineer has joined your team. To train this engineer, you decide to implement a sample app as simply structured as possible to use as an example. + +### B. A base for an app that will be developed and maintained for a long time + +You are the leader of a five-person Android team. This team will be developing a new Android app and the project is expected to be developed and maintained by the team for a long time. As the leader, you will be designing the app and implementing the basics before the rest of the team begins work on it. Your output will be used as the base upon which more features will be added in the future. + +### C. If you can think of a situation other than one of those listed above where you would be able to better show off your skills + +Be sure to describe the situation you chose, as well as what aspect you chose to focus on when creating your app, in `README.md`. +(E.g.: I was in charge of performance tuning within my team, and made a sample app to show the other team members how effective my proposed strategy was. In particular, I focused on making images load as fast as possible when scrolling.) + +## Minimum spec requirements for the app + +- Call the screen shown in the example image (see below) the “Timeline” + +![UI specifications](https://s3-ap-northeast-1.amazonaws.com/m-et/Android/images/39693654-9745-4d4d-8d03-25657d95c872.jpg) + +- On startup, access https://s3-ap-northeast-1.amazonaws.com/m-et/Android/json/master.json and get product data for each category (one tab) +- Display the Timeline as a grid with two columns +- Display the number of `likes` and `comments` on the grid +- For `sold out` items, display a `sold out` label on the grid +- Display a floating button to list a new item in the position shown in the image below +- Screen rotation is required +- However, switching layouts when rotating the screen (in other words, creating a separate layout for landscape view) is not required +- Please create an app that is *production-level* quality (pretend this app will be downloaded from the Play Store and used by the general public) + +## Requirements + +- Programming language (your choice will not affect your evaluation) + - Java or Kotlin +- The minimum SDK is 4.4 (Kitkat) +- You may use open source libraries if necessary +- All images necessary to implement the minimum requirements are in the res folder, so feel free to use them when necessary + +## Submission + +- A complete project that can be built in Android Studio and installed on a device immediately after being cloned from Github +- Make sure to include a Readme.md + - State which situation you chose from the above options + - If there is anything else regarding your submission you would like to highlight or explain, include that here +- Feel free to use CI tools and the like in order to optimize your development process (If you do so, you must include any configuration files, etc in your submission) From 90c846abaaab13c385fb0e2f5d1a14184f927f63 Mon Sep 17 00:00:00 2001 From: gongzelong Date: Sun, 8 Sep 2024 21:13:43 +0800 Subject: [PATCH 4/7] Upgrade AGB and gradle --- app/build.gradle | 9 ++++++--- app/src/main/AndroidManifest.xml | 3 +-- build.gradle | 6 +++--- gradle/wrapper/gradle-wrapper.properties | 2 +- lib_banner/build.gradle | 1 + lib_banner/src/main/AndroidManifest.xml | 3 +-- lib_common/build.gradle | 1 + lib_common/src/main/AndroidManifest.xml | 3 +-- lib_framework/build.gradle | 1 + lib_framework/src/main/AndroidManifest.xml | 3 +-- lib_glide/build.gradle | 1 + lib_glide/src/main/AndroidManifest.xml | 3 +-- lib_network/build.gradle | 1 + lib_network/src/main/AndroidManifest.xml | 3 +-- lib_room/build.gradle | 1 + lib_room/src/main/AndroidManifest.xml | 3 +-- lib_stater/build.gradle | 1 + lib_stater/src/main/AndroidManifest.xml | 3 +-- mod_demo/build.gradle | 1 + mod_demo/src/main/AndroidManifest.xml | 3 +-- mod_login/build.gradle | 1 + mod_login/src/main/AndroidManifest.xml | 3 +-- mod_main/build.gradle | 1 + mod_main/src/main/AndroidManifest.xml | 3 +-- mod_search/build.gradle | 1 + mod_search/src/main/AndroidManifest.xml | 3 +-- mod_user/build.gradle | 1 + mod_user/src/main/AndroidManifest.xml | 3 +-- mod_video/build.gradle | 1 + mod_video/src/main/AndroidManifest.xml | 3 +-- 30 files changed, 37 insertions(+), 35 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 212027b..7c1e45e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -70,11 +70,14 @@ android { dataBinding = true viewBinding = true } - - //Room官方建议:在`android`块中添加以下代码块,以从软件包中排除原子函数模块并防止出现警告 packagingOptions { - exclude 'META-INF/atomicfu.kotlin_module' + resources { + excludes += ['META-INF/atomicfu.kotlin_module'] + } } + + //Room官方建议:在`android`块中添加以下代码块,以从软件包中排除原子函数模块并防止出现警告 + namespace 'com.sum.tea' } dependencies { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 80e640c..284151f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,6 @@ + xmlns:tools="http://schemas.android.com/tools"> diff --git a/build.gradle b/build.gradle index 62942c7..cb33401 100644 --- a/build.gradle +++ b/build.gradle @@ -7,9 +7,9 @@ //} plugins { - id 'com.android.application' version '7.2.2' apply false - id 'com.android.library' version '7.2.2' apply false - id 'org.jetbrains.kotlin.android' version '1.6.10' apply false + id 'com.android.application' version '7.4.2' apply false + id 'com.android.library' version '7.4.2' apply false + id 'org.jetbrains.kotlin.android' version '1.6.21' apply false } apply from: this.rootProject.file('config.gradle') diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 2467683..b4624e5 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Tue Jan 31 22:10:53 CST 2023 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/lib_banner/build.gradle b/lib_banner/build.gradle index 4915d55..e049e3e 100644 --- a/lib_banner/build.gradle +++ b/lib_banner/build.gradle @@ -27,6 +27,7 @@ android { kotlinOptions { jvmTarget = '1.8' } + namespace 'com.sum.banner' } dependencies { diff --git a/lib_banner/src/main/AndroidManifest.xml b/lib_banner/src/main/AndroidManifest.xml index b854346..a5918e6 100644 --- a/lib_banner/src/main/AndroidManifest.xml +++ b/lib_banner/src/main/AndroidManifest.xml @@ -1,5 +1,4 @@ - + \ No newline at end of file diff --git a/lib_common/build.gradle b/lib_common/build.gradle index fbad280..8a34e8c 100644 --- a/lib_common/build.gradle +++ b/lib_common/build.gradle @@ -40,6 +40,7 @@ android { dataBinding = true viewBinding = true } + namespace 'com.sum.common' } dependencies { diff --git a/lib_common/src/main/AndroidManifest.xml b/lib_common/src/main/AndroidManifest.xml index f79beac..d160144 100644 --- a/lib_common/src/main/AndroidManifest.xml +++ b/lib_common/src/main/AndroidManifest.xml @@ -1,5 +1,4 @@ - + \ No newline at end of file diff --git a/lib_framework/build.gradle b/lib_framework/build.gradle index f1784a2..7de9289 100644 --- a/lib_framework/build.gradle +++ b/lib_framework/build.gradle @@ -31,6 +31,7 @@ android { dataBinding = true viewBinding = true } + namespace 'com.sum.framework' } dependencies { diff --git a/lib_framework/src/main/AndroidManifest.xml b/lib_framework/src/main/AndroidManifest.xml index 183f475..9c7ab43 100644 --- a/lib_framework/src/main/AndroidManifest.xml +++ b/lib_framework/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ - + diff --git a/lib_glide/build.gradle b/lib_glide/build.gradle index 2f9d056..8a897aa 100644 --- a/lib_glide/build.gradle +++ b/lib_glide/build.gradle @@ -28,6 +28,7 @@ android { kotlinOptions { jvmTarget = '1.8' } + namespace 'com.sum.glide' } dependencies { diff --git a/lib_glide/src/main/AndroidManifest.xml b/lib_glide/src/main/AndroidManifest.xml index a37b116..f808539 100644 --- a/lib_glide/src/main/AndroidManifest.xml +++ b/lib_glide/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ - + \ No newline at end of file diff --git a/lib_network/build.gradle b/lib_network/build.gradle index 36251f0..3a7b998 100644 --- a/lib_network/build.gradle +++ b/lib_network/build.gradle @@ -27,6 +27,7 @@ android { kotlinOptions { jvmTarget = '1.8' } + namespace 'com.sum.network' } dependencies { diff --git a/lib_network/src/main/AndroidManifest.xml b/lib_network/src/main/AndroidManifest.xml index 52deb47..9c7ab43 100644 --- a/lib_network/src/main/AndroidManifest.xml +++ b/lib_network/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ - + diff --git a/lib_room/build.gradle b/lib_room/build.gradle index 8e568f7..ff1f31e 100644 --- a/lib_room/build.gradle +++ b/lib_room/build.gradle @@ -29,6 +29,7 @@ android { kotlinOptions { jvmTarget = '1.8' } + namespace 'com.sum.room' } dependencies { diff --git a/lib_room/src/main/AndroidManifest.xml b/lib_room/src/main/AndroidManifest.xml index 2fc0a2b..a5918e6 100644 --- a/lib_room/src/main/AndroidManifest.xml +++ b/lib_room/src/main/AndroidManifest.xml @@ -1,5 +1,4 @@ - + \ No newline at end of file diff --git a/lib_stater/build.gradle b/lib_stater/build.gradle index b607934..7506cbf 100644 --- a/lib_stater/build.gradle +++ b/lib_stater/build.gradle @@ -27,6 +27,7 @@ android { kotlinOptions { jvmTarget = '1.8' } + namespace 'com.sum.stater' } dependencies { diff --git a/lib_stater/src/main/AndroidManifest.xml b/lib_stater/src/main/AndroidManifest.xml index ff50ac3..a5918e6 100644 --- a/lib_stater/src/main/AndroidManifest.xml +++ b/lib_stater/src/main/AndroidManifest.xml @@ -1,5 +1,4 @@ - + \ No newline at end of file diff --git a/mod_demo/build.gradle b/mod_demo/build.gradle index 53898aa..2d7cf26 100644 --- a/mod_demo/build.gradle +++ b/mod_demo/build.gradle @@ -38,6 +38,7 @@ android { dataBinding = true viewBinding = true } + namespace 'com.sum.demo' } dependencies { diff --git a/mod_demo/src/main/AndroidManifest.xml b/mod_demo/src/main/AndroidManifest.xml index b10342b..877b900 100644 --- a/mod_demo/src/main/AndroidManifest.xml +++ b/mod_demo/src/main/AndroidManifest.xml @@ -1,7 +1,6 @@ + xmlns:tools="http://schemas.android.com/tools"> - + diff --git a/mod_main/build.gradle b/mod_main/build.gradle index 7447f37..fa30cbe 100644 --- a/mod_main/build.gradle +++ b/mod_main/build.gradle @@ -40,6 +40,7 @@ android { dataBinding = true viewBinding = true } + namespace 'com.sum.main' } dependencies { diff --git a/mod_main/src/main/AndroidManifest.xml b/mod_main/src/main/AndroidManifest.xml index e868c6b..fa2b9c8 100644 --- a/mod_main/src/main/AndroidManifest.xml +++ b/mod_main/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ - + diff --git a/mod_search/build.gradle b/mod_search/build.gradle index 4d099e4..9083ffb 100644 --- a/mod_search/build.gradle +++ b/mod_search/build.gradle @@ -38,6 +38,7 @@ android { dataBinding = true viewBinding = true } + namespace 'com.sum.search' } dependencies { diff --git a/mod_search/src/main/AndroidManifest.xml b/mod_search/src/main/AndroidManifest.xml index 752b196..359cb7d 100644 --- a/mod_search/src/main/AndroidManifest.xml +++ b/mod_search/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ - + - + diff --git a/mod_video/build.gradle b/mod_video/build.gradle index 4796a83..5a7000a 100644 --- a/mod_video/build.gradle +++ b/mod_video/build.gradle @@ -38,6 +38,7 @@ android { dataBinding = true viewBinding = true } + namespace 'com.sum.video' } dependencies { diff --git a/mod_video/src/main/AndroidManifest.xml b/mod_video/src/main/AndroidManifest.xml index 9d35718..1baa72c 100644 --- a/mod_video/src/main/AndroidManifest.xml +++ b/mod_video/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ - + From abed9a5c2eeaef6451826825df08e5b0c4d82c79 Mon Sep 17 00:00:00 2001 From: gongzelong Date: Sun, 8 Sep 2024 21:19:55 +0800 Subject: [PATCH 5/7] Fix duplicate class build error https://stackoverflow.com/questions/69817925/problem-duplicate-class-androidx-lifecycle-viewmodel-found-in-modules Duplicate class androidx.lifecycle.ViewModelLazy found in modules jetified-lifecycle-viewmodel-ktx-2.3.1-runtime (androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1) and lifecycle-viewmodel-2.4.0-runtime (androidx.lifecycle:lifecycle-viewmodel:2.4.0) Duplicate class androidx.lifecycle.ViewModelProviderKt found in modules jetified-lifecycle-viewmodel-ktx-2.3.1-runtime (androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1) and lifecycle-viewmodel-2.4.0-runtime (androidx.lifecycle:lifecycle-viewmodel:2.4.0) Duplicate class androidx.lifecycle.ViewTreeViewModelKt found in modules jetified-lifecycle-viewmodel-ktx-2.3.1-runtime (androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1) and lifecycle-viewmodel-2.4.0-runtime (androidx.lifecycle:lifecycle-viewmodel:2.4.0) --- config.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.gradle b/config.gradle index e2b7455..3eb6268 100755 --- a/config.gradle +++ b/config.gradle @@ -47,7 +47,7 @@ ext { material : 'com.google.android.material:material:1.4.0', constraintlayout : 'androidx.constraintlayout:constraintlayout:2.0.4', liveDataKtx : 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.1', - viewModelKtx : 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1', + viewModelKtx : 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0', navigationFragment: 'androidx.navigation:navigation-fragment-ktx:2.3.5', navigationUI : 'androidx.navigation:navigation-ui-ktx:2.3.5', lifecycleCommon : 'androidx.lifecycle:lifecycle-common:2.5.0-beta01', From 24e766dcd5c23769ee4f4e42e9af504e30c6eac1 Mon Sep 17 00:00:00 2001 From: gongzelong Date: Sun, 8 Sep 2024 22:42:44 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E6=8B=89=E5=8F=96Mericari=E9=9D=A2?= =?UTF-8?q?=E8=AF=95=E9=A2=98=E7=9B=AE=E7=9A=84=E6=95=B0=E6=8D=AE=E5=88=B0?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E5=B9=B6=E4=B8=94=E6=B8=B2=E6=9F=93data.phot?= =?UTF-8?q?o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 模拟器无法翻墙获取到该数据,目前是用真机+代理,但这样就无法用Charles抓包 --- all.json | 1352 +++++++++++++++++ master.json | 14 + men.json | 452 ++++++ .../sum/main/ui/mercari/MercariFragment.kt | 63 - .../sum/main/ui/mercari/MericariFragment.kt | 62 + .../main/ui/mercari/adapter/MercariAdapter.kt | 7 +- .../main/res/navigation/mobile_navigation.xml | 2 +- women.json | 452 ++++++ 8 files changed, 2335 insertions(+), 69 deletions(-) create mode 100644 all.json create mode 100644 master.json create mode 100644 men.json delete mode 100644 mod_main/src/main/java/com/sum/main/ui/mercari/MercariFragment.kt create mode 100644 mod_main/src/main/java/com/sum/main/ui/mercari/MericariFragment.kt create mode 100644 women.json diff --git a/all.json b/all.json new file mode 100644 index 0000000..b90ed92 --- /dev/null +++ b/all.json @@ -0,0 +1,1352 @@ +[ + { + "id": "mmen1", + "name": "men1", + "status": "on_sale", + "num_likes": 91, + "num_comments": 59, + "price": 51, + "photo": "https://dummyimage.com/400x400/000/fff?text=men1" + }, + { + "id": "mmen2", + "name": "men2", + "status": "on_sale", + "num_likes": 81, + "num_comments": 89, + "price": 2, + "photo": "https://dummyimage.com/400x400/000/fff?text=men2" + }, + { + "id": "mmen3", + "name": "men3", + "status": "sold_out", + "num_likes": 17, + "num_comments": 58, + "price": 38, + "photo": "https://dummyimage.com/400x400/000/fff?text=men3" + }, + { + "id": "mmen4", + "name": "men4", + "status": "on_sale", + "num_likes": 41, + "num_comments": 54, + "price": 38, + "photo": "https://dummyimage.com/400x400/000/fff?text=men4" + }, + { + "id": "mmen5", + "name": "men5", + "status": "on_sale", + "num_likes": 19, + "num_comments": 32, + "price": 23, + "photo": "https://dummyimage.com/400x400/000/fff?text=men5" + }, + { + "id": "mmen6", + "name": "men6", + "status": "sold_out", + "num_likes": 38, + "num_comments": 66, + "price": 92, + "photo": "https://dummyimage.com/400x400/000/fff?text=men6" + }, + { + "id": "mmen7", + "name": "men7", + "status": "on_sale", + "num_likes": 17, + "num_comments": 66, + "price": 33, + "photo": "https://dummyimage.com/400x400/000/fff?text=men7" + }, + { + "id": "mmen8", + "name": "men8", + "status": "on_sale", + "num_likes": 41, + "num_comments": 48, + "price": 75, + "photo": "https://dummyimage.com/400x400/000/fff?text=men8" + }, + { + "id": "mmen9", + "name": "men9", + "status": "sold_out", + "num_likes": 6, + "num_comments": 27, + "price": 56, + "photo": "https://dummyimage.com/400x400/000/fff?text=men9" + }, + { + "id": "mmen10", + "name": "men10", + "status": "on_sale", + "num_likes": 60, + "num_comments": 48, + "price": 33, + "photo": "https://dummyimage.com/400x400/000/fff?text=men10" + }, + { + "id": "mmen11", + "name": "men11", + "status": "on_sale", + "num_likes": 61, + "num_comments": 12, + "price": 81, + "photo": "https://dummyimage.com/400x400/000/fff?text=men11" + }, + { + "id": "mmen12", + "name": "men12", + "status": "sold_out", + "num_likes": 81, + "num_comments": 81, + "price": 72, + "photo": "https://dummyimage.com/400x400/000/fff?text=men12" + }, + { + "id": "mmen13", + "name": "men13", + "status": "sold_out", + "num_likes": 40, + "num_comments": 92, + "price": 21, + "photo": "https://dummyimage.com/400x400/000/fff?text=men13" + }, + { + "id": "mmen14", + "name": "men14", + "status": "on_sale", + "num_likes": 21, + "num_comments": 89, + "price": 30, + "photo": "https://dummyimage.com/400x400/000/fff?text=men14" + }, + { + "id": "mmen15", + "name": "men15", + "status": "sold_out", + "num_likes": 92, + "num_comments": 61, + "price": 51, + "photo": "https://dummyimage.com/400x400/000/fff?text=men15" + }, + { + "id": "mmen16", + "name": "men16", + "status": "on_sale", + "num_likes": 4, + "num_comments": 70, + "price": 66, + "photo": "https://dummyimage.com/400x400/000/fff?text=men16" + }, + { + "id": "mmen17", + "name": "men17", + "status": "on_sale", + "num_likes": 98, + "num_comments": 47, + "price": 42, + "photo": "https://dummyimage.com/400x400/000/fff?text=men17" + }, + { + "id": "mmen18", + "name": "men18", + "status": "sold_out", + "num_likes": 1, + "num_comments": 11, + "price": 25, + "photo": "https://dummyimage.com/400x400/000/fff?text=men18" + }, + { + "id": "mmen19", + "name": "men19", + "status": "on_sale", + "num_likes": 41, + "num_comments": 7, + "price": 68, + "photo": "https://dummyimage.com/400x400/000/fff?text=men19" + }, + { + "id": "mmen20", + "name": "men20", + "status": "on_sale", + "num_likes": 94, + "num_comments": 55, + "price": 19, + "photo": "https://dummyimage.com/400x400/000/fff?text=men20" + }, + { + "id": "mmen21", + "name": "men21", + "status": "sold_out", + "num_likes": 72, + "num_comments": 52, + "price": 56, + "photo": "https://dummyimage.com/400x400/000/fff?text=men21" + }, + { + "id": "mmen22", + "name": "men22", + "status": "on_sale", + "num_likes": 37, + "num_comments": 60, + "price": 4, + "photo": "https://dummyimage.com/400x400/000/fff?text=men22" + }, + { + "id": "mmen23", + "name": "men23", + "status": "sold_out", + "num_likes": 12, + "num_comments": 85, + "price": 35, + "photo": "https://dummyimage.com/400x400/000/fff?text=men23" + }, + { + "id": "mmen24", + "name": "men24", + "status": "sold_out", + "num_likes": 79, + "num_comments": 57, + "price": 3, + "photo": "https://dummyimage.com/400x400/000/fff?text=men24" + }, + { + "id": "mmen25", + "name": "men25", + "status": "on_sale", + "num_likes": 55, + "num_comments": 78, + "price": 8, + "photo": "https://dummyimage.com/400x400/000/fff?text=men25" + }, + { + "id": "mmen26", + "name": "men26", + "status": "on_sale", + "num_likes": 19, + "num_comments": 18, + "price": 44, + "photo": "https://dummyimage.com/400x400/000/fff?text=men26" + }, + { + "id": "mmen27", + "name": "men27", + "status": "sold_out", + "num_likes": 4, + "num_comments": 74, + "price": 87, + "photo": "https://dummyimage.com/400x400/000/fff?text=men27" + }, + { + "id": "mmen28", + "name": "men28", + "status": "on_sale", + "num_likes": 40, + "num_comments": 7, + "price": 10, + "photo": "https://dummyimage.com/400x400/000/fff?text=men28" + }, + { + "id": "mmen29", + "name": "men29", + "status": "on_sale", + "num_likes": 32, + "num_comments": 8, + "price": 84, + "photo": "https://dummyimage.com/400x400/000/fff?text=men29" + }, + { + "id": "mmen30", + "name": "men30", + "status": "sold_out", + "num_likes": 63, + "num_comments": 94, + "price": 54, + "photo": "https://dummyimage.com/400x400/000/fff?text=men30" + }, + { + "id": "mmen31", + "name": "men31", + "status": "sold_out", + "num_likes": 35, + "num_comments": 60, + "price": 7, + "photo": "https://dummyimage.com/400x400/000/fff?text=men31" + }, + { + "id": "mmen32", + "name": "men32", + "status": "sold_out", + "num_likes": 99, + "num_comments": 30, + "price": 34, + "photo": "https://dummyimage.com/400x400/000/fff?text=men32" + }, + { + "id": "mmen33", + "name": "men33", + "status": "sold_out", + "num_likes": 6, + "num_comments": 74, + "price": 19, + "photo": "https://dummyimage.com/400x400/000/fff?text=men33" + }, + { + "id": "mmen34", + "name": "men34", + "status": "sold_out", + "num_likes": 24, + "num_comments": 95, + "price": 96, + "photo": "https://dummyimage.com/400x400/000/fff?text=men34" + }, + { + "id": "mmen35", + "name": "men35", + "status": "sold_out", + "num_likes": 15, + "num_comments": 52, + "price": 7, + "photo": "https://dummyimage.com/400x400/000/fff?text=men35" + }, + { + "id": "mmen36", + "name": "men36", + "status": "sold_out", + "num_likes": 41, + "num_comments": 12, + "price": 6, + "photo": "https://dummyimage.com/400x400/000/fff?text=men36" + }, + { + "id": "mmen37", + "name": "men37", + "status": "sold_out", + "num_likes": 48, + "num_comments": 84, + "price": 42, + "photo": "https://dummyimage.com/400x400/000/fff?text=men37" + }, + { + "id": "mmen38", + "name": "men38", + "status": "sold_out", + "num_likes": 62, + "num_comments": 35, + "price": 48, + "photo": "https://dummyimage.com/400x400/000/fff?text=men38" + }, + { + "id": "mmen39", + "name": "men39", + "status": "sold_out", + "num_likes": 59, + "num_comments": 1, + "price": 82, + "photo": "https://dummyimage.com/400x400/000/fff?text=men39" + }, + { + "id": "mmen40", + "name": "men40", + "status": "on_sale", + "num_likes": 74, + "num_comments": 99, + "price": 8, + "photo": "https://dummyimage.com/400x400/000/fff?text=men40" + }, + { + "id": "mmen41", + "name": "men41", + "status": "on_sale", + "num_likes": 33, + "num_comments": 55, + "price": 27, + "photo": "https://dummyimage.com/400x400/000/fff?text=men41" + }, + { + "id": "mmen42", + "name": "men42", + "status": "sold_out", + "num_likes": 34, + "num_comments": 50, + "price": 27, + "photo": "https://dummyimage.com/400x400/000/fff?text=men42" + }, + { + "id": "mmen43", + "name": "men43", + "status": "sold_out", + "num_likes": 99, + "num_comments": 61, + "price": 8, + "photo": "https://dummyimage.com/400x400/000/fff?text=men43" + }, + { + "id": "mmen44", + "name": "men44", + "status": "on_sale", + "num_likes": 29, + "num_comments": 23, + "price": 35, + "photo": "https://dummyimage.com/400x400/000/fff?text=men44" + }, + { + "id": "mmen45", + "name": "men45", + "status": "sold_out", + "num_likes": 54, + "num_comments": 16, + "price": 94, + "photo": "https://dummyimage.com/400x400/000/fff?text=men45" + }, + { + "id": "mmen46", + "name": "men46", + "status": "on_sale", + "num_likes": 50, + "num_comments": 78, + "price": 1, + "photo": "https://dummyimage.com/400x400/000/fff?text=men46" + }, + { + "id": "mmen47", + "name": "men47", + "status": "on_sale", + "num_likes": 22, + "num_comments": 89, + "price": 5, + "photo": "https://dummyimage.com/400x400/000/fff?text=men47" + }, + { + "id": "mmen48", + "name": "men48", + "status": "sold_out", + "num_likes": 96, + "num_comments": 52, + "price": 74, + "photo": "https://dummyimage.com/400x400/000/fff?text=men48" + }, + { + "id": "mmen49", + "name": "men49", + "status": "on_sale", + "num_likes": 43, + "num_comments": 30, + "price": 35, + "photo": "https://dummyimage.com/400x400/000/fff?text=men49" + }, + { + "id": "mmen50", + "name": "men50", + "status": "on_sale", + "num_likes": 10, + "num_comments": 95, + "price": 78, + "photo": "https://dummyimage.com/400x400/000/fff?text=men50" + }, + { + "id": "mwomen1", + "name": "women1", + "status": "on_sale", + "num_likes": 33, + "num_comments": 41, + "price": 61, + "photo": "https://dummyimage.com/400x400/000/fff?text=women1" + }, + { + "id": "mwomen2", + "name": "women2", + "status": "on_sale", + "num_likes": 97, + "num_comments": 8, + "price": 82, + "photo": "https://dummyimage.com/400x400/000/fff?text=women2" + }, + { + "id": "mwomen3", + "name": "women3", + "status": "sold_out", + "num_likes": 45, + "num_comments": 97, + "price": 27, + "photo": "https://dummyimage.com/400x400/000/fff?text=women3" + }, + { + "id": "mwomen4", + "name": "women4", + "status": "on_sale", + "num_likes": 0, + "num_comments": 23, + "price": 19, + "photo": "https://dummyimage.com/400x400/000/fff?text=women4" + }, + { + "id": "mwomen5", + "name": "women5", + "status": "on_sale", + "num_likes": 29, + "num_comments": 94, + "price": 89, + "photo": "https://dummyimage.com/400x400/000/fff?text=women5" + }, + { + "id": "mwomen6", + "name": "women6", + "status": "sold_out", + "num_likes": 24, + "num_comments": 78, + "price": 64, + "photo": "https://dummyimage.com/400x400/000/fff?text=women6" + }, + { + "id": "mwomen7", + "name": "women7", + "status": "on_sale", + "num_likes": 22, + "num_comments": 69, + "price": 46, + "photo": "https://dummyimage.com/400x400/000/fff?text=women7" + }, + { + "id": "mwomen8", + "name": "women8", + "status": "on_sale", + "num_likes": 95, + "num_comments": 78, + "price": 63, + "photo": "https://dummyimage.com/400x400/000/fff?text=women8" + }, + { + "id": "mwomen9", + "name": "women9", + "status": "sold_out", + "num_likes": 69, + "num_comments": 17, + "price": 67, + "photo": "https://dummyimage.com/400x400/000/fff?text=women9" + }, + { + "id": "mwomen10", + "name": "women10", + "status": "on_sale", + "num_likes": 72, + "num_comments": 20, + "price": 36, + "photo": "https://dummyimage.com/400x400/000/fff?text=women10" + }, + { + "id": "mwomen11", + "name": "women11", + "status": "on_sale", + "num_likes": 71, + "num_comments": 73, + "price": 26, + "photo": "https://dummyimage.com/400x400/000/fff?text=women11" + }, + { + "id": "mwomen12", + "name": "women12", + "status": "sold_out", + "num_likes": 14, + "num_comments": 59, + "price": 78, + "photo": "https://dummyimage.com/400x400/000/fff?text=women12" + }, + { + "id": "mwomen13", + "name": "women13", + "status": "sold_out", + "num_likes": 68, + "num_comments": 98, + "price": 40, + "photo": "https://dummyimage.com/400x400/000/fff?text=women13" + }, + { + "id": "mwomen14", + "name": "women14", + "status": "on_sale", + "num_likes": 95, + "num_comments": 98, + "price": 13, + "photo": "https://dummyimage.com/400x400/000/fff?text=women14" + }, + { + "id": "mwomen15", + "name": "women15", + "status": "sold_out", + "num_likes": 3, + "num_comments": 33, + "price": 71, + "photo": "https://dummyimage.com/400x400/000/fff?text=women15" + }, + { + "id": "mwomen16", + "name": "women16", + "status": "on_sale", + "num_likes": 35, + "num_comments": 64, + "price": 41, + "photo": "https://dummyimage.com/400x400/000/fff?text=women16" + }, + { + "id": "mwomen17", + "name": "women17", + "status": "on_sale", + "num_likes": 82, + "num_comments": 46, + "price": 19, + "photo": "https://dummyimage.com/400x400/000/fff?text=women17" + }, + { + "id": "mwomen18", + "name": "women18", + "status": "sold_out", + "num_likes": 42, + "num_comments": 36, + "price": 29, + "photo": "https://dummyimage.com/400x400/000/fff?text=women18" + }, + { + "id": "mwomen19", + "name": "women19", + "status": "on_sale", + "num_likes": 32, + "num_comments": 9, + "price": 8, + "photo": "https://dummyimage.com/400x400/000/fff?text=women19" + }, + { + "id": "mwomen20", + "name": "women20", + "status": "on_sale", + "num_likes": 99, + "num_comments": 60, + "price": 43, + "photo": "https://dummyimage.com/400x400/000/fff?text=women20" + }, + { + "id": "mwomen21", + "name": "women21", + "status": "sold_out", + "num_likes": 76, + "num_comments": 1, + "price": 8, + "photo": "https://dummyimage.com/400x400/000/fff?text=women21" + }, + { + "id": "mwomen22", + "name": "women22", + "status": "on_sale", + "num_likes": 92, + "num_comments": 33, + "price": 88, + "photo": "https://dummyimage.com/400x400/000/fff?text=women22" + }, + { + "id": "mwomen23", + "name": "women23", + "status": "sold_out", + "num_likes": 6, + "num_comments": 15, + "price": 13, + "photo": "https://dummyimage.com/400x400/000/fff?text=women23" + }, + { + "id": "mwomen24", + "name": "women24", + "status": "sold_out", + "num_likes": 66, + "num_comments": 78, + "price": 47, + "photo": "https://dummyimage.com/400x400/000/fff?text=women24" + }, + { + "id": "mwomen25", + "name": "women25", + "status": "on_sale", + "num_likes": 6, + "num_comments": 25, + "price": 99, + "photo": "https://dummyimage.com/400x400/000/fff?text=women25" + }, + { + "id": "mwomen26", + "name": "women26", + "status": "on_sale", + "num_likes": 39, + "num_comments": 88, + "price": 18, + "photo": "https://dummyimage.com/400x400/000/fff?text=women26" + }, + { + "id": "mwomen27", + "name": "women27", + "status": "sold_out", + "num_likes": 71, + "num_comments": 42, + "price": 55, + "photo": "https://dummyimage.com/400x400/000/fff?text=women27" + }, + { + "id": "mwomen28", + "name": "women28", + "status": "on_sale", + "num_likes": 97, + "num_comments": 81, + "price": 57, + "photo": "https://dummyimage.com/400x400/000/fff?text=women28" + }, + { + "id": "mwomen29", + "name": "women29", + "status": "on_sale", + "num_likes": 1, + "num_comments": 11, + "price": 97, + "photo": "https://dummyimage.com/400x400/000/fff?text=women29" + }, + { + "id": "mwomen30", + "name": "women30", + "status": "sold_out", + "num_likes": 65, + "num_comments": 44, + "price": 73, + "photo": "https://dummyimage.com/400x400/000/fff?text=women30" + }, + { + "id": "mwomen31", + "name": "women31", + "status": "sold_out", + "num_likes": 94, + "num_comments": 52, + "price": 6, + "photo": "https://dummyimage.com/400x400/000/fff?text=women31" + }, + { + "id": "mwomen32", + "name": "women32", + "status": "sold_out", + "num_likes": 28, + "num_comments": 81, + "price": 59, + "photo": "https://dummyimage.com/400x400/000/fff?text=women32" + }, + { + "id": "mwomen33", + "name": "women33", + "status": "sold_out", + "num_likes": 48, + "num_comments": 47, + "price": 68, + "photo": "https://dummyimage.com/400x400/000/fff?text=women33" + }, + { + "id": "mwomen34", + "name": "women34", + "status": "sold_out", + "num_likes": 89, + "num_comments": 25, + "price": 36, + "photo": "https://dummyimage.com/400x400/000/fff?text=women34" + }, + { + "id": "mwomen35", + "name": "women35", + "status": "sold_out", + "num_likes": 13, + "num_comments": 21, + "price": 83, + "photo": "https://dummyimage.com/400x400/000/fff?text=women35" + }, + { + "id": "mwomen36", + "name": "women36", + "status": "sold_out", + "num_likes": 56, + "num_comments": 97, + "price": 42, + "photo": "https://dummyimage.com/400x400/000/fff?text=women36" + }, + { + "id": "mwomen37", + "name": "women37", + "status": "sold_out", + "num_likes": 81, + "num_comments": 36, + "price": 28, + "photo": "https://dummyimage.com/400x400/000/fff?text=women37" + }, + { + "id": "mwomen38", + "name": "women38", + "status": "sold_out", + "num_likes": 16, + "num_comments": 29, + "price": 59, + "photo": "https://dummyimage.com/400x400/000/fff?text=women38" + }, + { + "id": "mwomen39", + "name": "women39", + "status": "sold_out", + "num_likes": 6, + "num_comments": 80, + "price": 3, + "photo": "https://dummyimage.com/400x400/000/fff?text=women39" + }, + { + "id": "mwomen40", + "name": "women40", + "status": "on_sale", + "num_likes": 91, + "num_comments": 24, + "price": 1, + "photo": "https://dummyimage.com/400x400/000/fff?text=women40" + }, + { + "id": "mwomen41", + "name": "women41", + "status": "on_sale", + "num_likes": 18, + "num_comments": 36, + "price": 84, + "photo": "https://dummyimage.com/400x400/000/fff?text=women41" + }, + { + "id": "mwomen42", + "name": "women42", + "status": "sold_out", + "num_likes": 27, + "num_comments": 40, + "price": 29, + "photo": "https://dummyimage.com/400x400/000/fff?text=women42" + }, + { + "id": "mwomen43", + "name": "women43", + "status": "sold_out", + "num_likes": 41, + "num_comments": 96, + "price": 39, + "photo": "https://dummyimage.com/400x400/000/fff?text=women43" + }, + { + "id": "mwomen44", + "name": "women44", + "status": "on_sale", + "num_likes": 7, + "num_comments": 12, + "price": 64, + "photo": "https://dummyimage.com/400x400/000/fff?text=women44" + }, + { + "id": "mwomen45", + "name": "women45", + "status": "sold_out", + "num_likes": 89, + "num_comments": 17, + "price": 72, + "photo": "https://dummyimage.com/400x400/000/fff?text=women45" + }, + { + "id": "mwomen46", + "name": "women46", + "status": "on_sale", + "num_likes": 22, + "num_comments": 65, + "price": 29, + "photo": "https://dummyimage.com/400x400/000/fff?text=women46" + }, + { + "id": "mwomen47", + "name": "women47", + "status": "on_sale", + "num_likes": 35, + "num_comments": 77, + "price": 10, + "photo": "https://dummyimage.com/400x400/000/fff?text=women47" + }, + { + "id": "mwomen48", + "name": "women48", + "status": "sold_out", + "num_likes": 28, + "num_comments": 39, + "price": 98, + "photo": "https://dummyimage.com/400x400/000/fff?text=women48" + }, + { + "id": "mwomen49", + "name": "women49", + "status": "on_sale", + "num_likes": 29, + "num_comments": 68, + "price": 51, + "photo": "https://dummyimage.com/400x400/000/fff?text=women49" + }, + { + "id": "mwomen50", + "name": "women50", + "status": "on_sale", + "num_likes": 76, + "num_comments": 71, + "price": 0, + "photo": "https://dummyimage.com/400x400/000/fff?text=women50" + }, + { + "id": "mall1", + "name": "all1", + "status": "on_sale", + "num_likes": 39, + "num_comments": 40, + "price": 89, + "photo": "https://dummyimage.com/400x400/000/fff?text=all1" + }, + { + "id": "mall2", + "name": "all2", + "status": "on_sale", + "num_likes": 25, + "num_comments": 72, + "price": 57, + "photo": "https://dummyimage.com/400x400/000/fff?text=all2" + }, + { + "id": "mall3", + "name": "all3", + "status": "sold_out", + "num_likes": 8, + "num_comments": 23, + "price": 91, + "photo": "https://dummyimage.com/400x400/000/fff?text=all3" + }, + { + "id": "mall4", + "name": "all4", + "status": "on_sale", + "num_likes": 15, + "num_comments": 29, + "price": 74, + "photo": "https://dummyimage.com/400x400/000/fff?text=all4" + }, + { + "id": "mall5", + "name": "all5", + "status": "on_sale", + "num_likes": 80, + "num_comments": 32, + "price": 67, + "photo": "https://dummyimage.com/400x400/000/fff?text=all5" + }, + { + "id": "mall6", + "name": "all6", + "status": "sold_out", + "num_likes": 17, + "num_comments": 60, + "price": 36, + "photo": "https://dummyimage.com/400x400/000/fff?text=all6" + }, + { + "id": "mall7", + "name": "all7", + "status": "on_sale", + "num_likes": 71, + "num_comments": 15, + "price": 34, + "photo": "https://dummyimage.com/400x400/000/fff?text=all7" + }, + { + "id": "mall8", + "name": "all8", + "status": "on_sale", + "num_likes": 60, + "num_comments": 86, + "price": 17, + "photo": "https://dummyimage.com/400x400/000/fff?text=all8" + }, + { + "id": "mall9", + "name": "all9", + "status": "sold_out", + "num_likes": 20, + "num_comments": 30, + "price": 27, + "photo": "https://dummyimage.com/400x400/000/fff?text=all9" + }, + { + "id": "mall10", + "name": "all10", + "status": "on_sale", + "num_likes": 52, + "num_comments": 92, + "price": 13, + "photo": "https://dummyimage.com/400x400/000/fff?text=all10" + }, + { + "id": "mall11", + "name": "all11", + "status": "on_sale", + "num_likes": 75, + "num_comments": 83, + "price": 44, + "photo": "https://dummyimage.com/400x400/000/fff?text=all11" + }, + { + "id": "mall12", + "name": "all12", + "status": "sold_out", + "num_likes": 79, + "num_comments": 32, + "price": 55, + "photo": "https://dummyimage.com/400x400/000/fff?text=all12" + }, + { + "id": "mall13", + "name": "all13", + "status": "sold_out", + "num_likes": 77, + "num_comments": 31, + "price": 5, + "photo": "https://dummyimage.com/400x400/000/fff?text=all13" + }, + { + "id": "mall14", + "name": "all14", + "status": "on_sale", + "num_likes": 64, + "num_comments": 75, + "price": 15, + "photo": "https://dummyimage.com/400x400/000/fff?text=all14" + }, + { + "id": "mall15", + "name": "all15", + "status": "sold_out", + "num_likes": 50, + "num_comments": 69, + "price": 93, + "photo": "https://dummyimage.com/400x400/000/fff?text=all15" + }, + { + "id": "mall16", + "name": "all16", + "status": "on_sale", + "num_likes": 82, + "num_comments": 13, + "price": 39, + "photo": "https://dummyimage.com/400x400/000/fff?text=all16" + }, + { + "id": "mall17", + "name": "all17", + "status": "on_sale", + "num_likes": 99, + "num_comments": 44, + "price": 33, + "photo": "https://dummyimage.com/400x400/000/fff?text=all17" + }, + { + "id": "mall18", + "name": "all18", + "status": "sold_out", + "num_likes": 22, + "num_comments": 16, + "price": 37, + "photo": "https://dummyimage.com/400x400/000/fff?text=all18" + }, + { + "id": "mall19", + "name": "all19", + "status": "on_sale", + "num_likes": 81, + "num_comments": 7, + "price": 39, + "photo": "https://dummyimage.com/400x400/000/fff?text=all19" + }, + { + "id": "mall20", + "name": "all20", + "status": "on_sale", + "num_likes": 1, + "num_comments": 64, + "price": 50, + "photo": "https://dummyimage.com/400x400/000/fff?text=all20" + }, + { + "id": "mall21", + "name": "all21", + "status": "sold_out", + "num_likes": 45, + "num_comments": 23, + "price": 45, + "photo": "https://dummyimage.com/400x400/000/fff?text=all21" + }, + { + "id": "mall22", + "name": "all22", + "status": "on_sale", + "num_likes": 88, + "num_comments": 55, + "price": 22, + "photo": "https://dummyimage.com/400x400/000/fff?text=all22" + }, + { + "id": "mall23", + "name": "all23", + "status": "sold_out", + "num_likes": 49, + "num_comments": 1, + "price": 28, + "photo": "https://dummyimage.com/400x400/000/fff?text=all23" + }, + { + "id": "mall24", + "name": "all24", + "status": "sold_out", + "num_likes": 57, + "num_comments": 56, + "price": 68, + "photo": "https://dummyimage.com/400x400/000/fff?text=all24" + }, + { + "id": "mall25", + "name": "all25", + "status": "on_sale", + "num_likes": 47, + "num_comments": 59, + "price": 5, + "photo": "https://dummyimage.com/400x400/000/fff?text=all25" + }, + { + "id": "mall26", + "name": "all26", + "status": "on_sale", + "num_likes": 15, + "num_comments": 98, + "price": 54, + "photo": "https://dummyimage.com/400x400/000/fff?text=all26" + }, + { + "id": "mall27", + "name": "all27", + "status": "sold_out", + "num_likes": 24, + "num_comments": 43, + "price": 57, + "photo": "https://dummyimage.com/400x400/000/fff?text=all27" + }, + { + "id": "mall28", + "name": "all28", + "status": "on_sale", + "num_likes": 34, + "num_comments": 30, + "price": 47, + "photo": "https://dummyimage.com/400x400/000/fff?text=all28" + }, + { + "id": "mall29", + "name": "all29", + "status": "on_sale", + "num_likes": 3, + "num_comments": 82, + "price": 41, + "photo": "https://dummyimage.com/400x400/000/fff?text=all29" + }, + { + "id": "mall30", + "name": "all30", + "status": "sold_out", + "num_likes": 93, + "num_comments": 81, + "price": 16, + "photo": "https://dummyimage.com/400x400/000/fff?text=all30" + }, + { + "id": "mall31", + "name": "all31", + "status": "sold_out", + "num_likes": 72, + "num_comments": 35, + "price": 69, + "photo": "https://dummyimage.com/400x400/000/fff?text=all31" + }, + { + "id": "mall32", + "name": "all32", + "status": "sold_out", + "num_likes": 99, + "num_comments": 11, + "price": 13, + "photo": "https://dummyimage.com/400x400/000/fff?text=all32" + }, + { + "id": "mall33", + "name": "all33", + "status": "sold_out", + "num_likes": 69, + "num_comments": 25, + "price": 5, + "photo": "https://dummyimage.com/400x400/000/fff?text=all33" + }, + { + "id": "mall34", + "name": "all34", + "status": "sold_out", + "num_likes": 94, + "num_comments": 11, + "price": 21, + "photo": "https://dummyimage.com/400x400/000/fff?text=all34" + }, + { + "id": "mall35", + "name": "all35", + "status": "sold_out", + "num_likes": 15, + "num_comments": 91, + "price": 83, + "photo": "https://dummyimage.com/400x400/000/fff?text=all35" + }, + { + "id": "mall36", + "name": "all36", + "status": "sold_out", + "num_likes": 4, + "num_comments": 26, + "price": 94, + "photo": "https://dummyimage.com/400x400/000/fff?text=all36" + }, + { + "id": "mall37", + "name": "all37", + "status": "sold_out", + "num_likes": 62, + "num_comments": 59, + "price": 72, + "photo": "https://dummyimage.com/400x400/000/fff?text=all37" + }, + { + "id": "mall38", + "name": "all38", + "status": "sold_out", + "num_likes": 0, + "num_comments": 46, + "price": 69, + "photo": "https://dummyimage.com/400x400/000/fff?text=all38" + }, + { + "id": "mall39", + "name": "all39", + "status": "sold_out", + "num_likes": 93, + "num_comments": 51, + "price": 29, + "photo": "https://dummyimage.com/400x400/000/fff?text=all39" + }, + { + "id": "mall40", + "name": "all40", + "status": "on_sale", + "num_likes": 19, + "num_comments": 14, + "price": 13, + "photo": "https://dummyimage.com/400x400/000/fff?text=all40" + }, + { + "id": "mall41", + "name": "all41", + "status": "on_sale", + "num_likes": 96, + "num_comments": 43, + "price": 50, + "photo": "https://dummyimage.com/400x400/000/fff?text=all41" + }, + { + "id": "mall42", + "name": "all42", + "status": "sold_out", + "num_likes": 42, + "num_comments": 48, + "price": 25, + "photo": "https://dummyimage.com/400x400/000/fff?text=all42" + }, + { + "id": "mall43", + "name": "all43", + "status": "sold_out", + "num_likes": 88, + "num_comments": 98, + "price": 37, + "photo": "https://dummyimage.com/400x400/000/fff?text=all43" + }, + { + "id": "mall44", + "name": "all44", + "status": "on_sale", + "num_likes": 99, + "num_comments": 60, + "price": 34, + "photo": "https://dummyimage.com/400x400/000/fff?text=all44" + }, + { + "id": "mall45", + "name": "all45", + "status": "sold_out", + "num_likes": 99, + "num_comments": 98, + "price": 50, + "photo": "https://dummyimage.com/400x400/000/fff?text=all45" + }, + { + "id": "mall46", + "name": "all46", + "status": "on_sale", + "num_likes": 62, + "num_comments": 54, + "price": 6, + "photo": "https://dummyimage.com/400x400/000/fff?text=all46" + }, + { + "id": "mall47", + "name": "all47", + "status": "on_sale", + "num_likes": 56, + "num_comments": 80, + "price": 53, + "photo": "https://dummyimage.com/400x400/000/fff?text=all47" + }, + { + "id": "mall48", + "name": "all48", + "status": "sold_out", + "num_likes": 81, + "num_comments": 86, + "price": 15, + "photo": "https://dummyimage.com/400x400/000/fff?text=all48" + }, + { + "id": "mall49", + "name": "all49", + "status": "on_sale", + "num_likes": 79, + "num_comments": 57, + "price": 92, + "photo": "https://dummyimage.com/400x400/000/fff?text=all49" + }, + { + "id": "mall50", + "name": "all50", + "status": "on_sale", + "num_likes": 12, + "num_comments": 49, + "price": 77, + "photo": "https://dummyimage.com/400x400/000/fff?text=all50" + } +] diff --git a/master.json b/master.json new file mode 100644 index 0000000..091eabe --- /dev/null +++ b/master.json @@ -0,0 +1,14 @@ +[ + { + "name" : "All", + "data" : "https://s3-ap-northeast-1.amazonaws.com/m-et/Android/json/all.json" + }, + { + "name" : "Men", + "data" : "https://s3-ap-northeast-1.amazonaws.com/m-et/Android/json/men.json" + }, + { + "name" : "Women", + "data" : "https://s3-ap-northeast-1.amazonaws.com/m-et/Android/json/women.json" + } +] \ No newline at end of file diff --git a/men.json b/men.json new file mode 100644 index 0000000..8d5f040 --- /dev/null +++ b/men.json @@ -0,0 +1,452 @@ +[ + { + "id": "mmen1", + "name": "men1", + "status": "on_sale", + "num_likes": 91, + "num_comments": 59, + "price": 51, + "photo": "https://dummyimage.com/400x400/000/fff?text=men1" + }, + { + "id": "mmen2", + "name": "men2", + "status": "on_sale", + "num_likes": 81, + "num_comments": 89, + "price": 2, + "photo": "https://dummyimage.com/400x400/000/fff?text=men2" + }, + { + "id": "mmen3", + "name": "men3", + "status": "sold_out", + "num_likes": 17, + "num_comments": 58, + "price": 38, + "photo": "https://dummyimage.com/400x400/000/fff?text=men3" + }, + { + "id": "mmen4", + "name": "men4", + "status": "on_sale", + "num_likes": 41, + "num_comments": 54, + "price": 38, + "photo": "https://dummyimage.com/400x400/000/fff?text=men4" + }, + { + "id": "mmen5", + "name": "men5", + "status": "on_sale", + "num_likes": 19, + "num_comments": 32, + "price": 23, + "photo": "https://dummyimage.com/400x400/000/fff?text=men5" + }, + { + "id": "mmen6", + "name": "men6", + "status": "sold_out", + "num_likes": 38, + "num_comments": 66, + "price": 92, + "photo": "https://dummyimage.com/400x400/000/fff?text=men6" + }, + { + "id": "mmen7", + "name": "men7", + "status": "on_sale", + "num_likes": 17, + "num_comments": 66, + "price": 33, + "photo": "https://dummyimage.com/400x400/000/fff?text=men7" + }, + { + "id": "mmen8", + "name": "men8", + "status": "on_sale", + "num_likes": 41, + "num_comments": 48, + "price": 75, + "photo": "https://dummyimage.com/400x400/000/fff?text=men8" + }, + { + "id": "mmen9", + "name": "men9", + "status": "sold_out", + "num_likes": 6, + "num_comments": 27, + "price": 56, + "photo": "https://dummyimage.com/400x400/000/fff?text=men9" + }, + { + "id": "mmen10", + "name": "men10", + "status": "on_sale", + "num_likes": 60, + "num_comments": 48, + "price": 33, + "photo": "https://dummyimage.com/400x400/000/fff?text=men10" + }, + { + "id": "mmen11", + "name": "men11", + "status": "on_sale", + "num_likes": 61, + "num_comments": 12, + "price": 81, + "photo": "https://dummyimage.com/400x400/000/fff?text=men11" + }, + { + "id": "mmen12", + "name": "men12", + "status": "sold_out", + "num_likes": 81, + "num_comments": 81, + "price": 72, + "photo": "https://dummyimage.com/400x400/000/fff?text=men12" + }, + { + "id": "mmen13", + "name": "men13", + "status": "sold_out", + "num_likes": 40, + "num_comments": 92, + "price": 21, + "photo": "https://dummyimage.com/400x400/000/fff?text=men13" + }, + { + "id": "mmen14", + "name": "men14", + "status": "on_sale", + "num_likes": 21, + "num_comments": 89, + "price": 30, + "photo": "https://dummyimage.com/400x400/000/fff?text=men14" + }, + { + "id": "mmen15", + "name": "men15", + "status": "sold_out", + "num_likes": 92, + "num_comments": 61, + "price": 51, + "photo": "https://dummyimage.com/400x400/000/fff?text=men15" + }, + { + "id": "mmen16", + "name": "men16", + "status": "on_sale", + "num_likes": 4, + "num_comments": 70, + "price": 66, + "photo": "https://dummyimage.com/400x400/000/fff?text=men16" + }, + { + "id": "mmen17", + "name": "men17", + "status": "on_sale", + "num_likes": 98, + "num_comments": 47, + "price": 42, + "photo": "https://dummyimage.com/400x400/000/fff?text=men17" + }, + { + "id": "mmen18", + "name": "men18", + "status": "sold_out", + "num_likes": 1, + "num_comments": 11, + "price": 25, + "photo": "https://dummyimage.com/400x400/000/fff?text=men18" + }, + { + "id": "mmen19", + "name": "men19", + "status": "on_sale", + "num_likes": 41, + "num_comments": 7, + "price": 68, + "photo": "https://dummyimage.com/400x400/000/fff?text=men19" + }, + { + "id": "mmen20", + "name": "men20", + "status": "on_sale", + "num_likes": 94, + "num_comments": 55, + "price": 19, + "photo": "https://dummyimage.com/400x400/000/fff?text=men20" + }, + { + "id": "mmen21", + "name": "men21", + "status": "sold_out", + "num_likes": 72, + "num_comments": 52, + "price": 56, + "photo": "https://dummyimage.com/400x400/000/fff?text=men21" + }, + { + "id": "mmen22", + "name": "men22", + "status": "on_sale", + "num_likes": 37, + "num_comments": 60, + "price": 4, + "photo": "https://dummyimage.com/400x400/000/fff?text=men22" + }, + { + "id": "mmen23", + "name": "men23", + "status": "sold_out", + "num_likes": 12, + "num_comments": 85, + "price": 35, + "photo": "https://dummyimage.com/400x400/000/fff?text=men23" + }, + { + "id": "mmen24", + "name": "men24", + "status": "sold_out", + "num_likes": 79, + "num_comments": 57, + "price": 3, + "photo": "https://dummyimage.com/400x400/000/fff?text=men24" + }, + { + "id": "mmen25", + "name": "men25", + "status": "on_sale", + "num_likes": 55, + "num_comments": 78, + "price": 8, + "photo": "https://dummyimage.com/400x400/000/fff?text=men25" + }, + { + "id": "mmen26", + "name": "men26", + "status": "on_sale", + "num_likes": 19, + "num_comments": 18, + "price": 44, + "photo": "https://dummyimage.com/400x400/000/fff?text=men26" + }, + { + "id": "mmen27", + "name": "men27", + "status": "sold_out", + "num_likes": 4, + "num_comments": 74, + "price": 87, + "photo": "https://dummyimage.com/400x400/000/fff?text=men27" + }, + { + "id": "mmen28", + "name": "men28", + "status": "on_sale", + "num_likes": 40, + "num_comments": 7, + "price": 10, + "photo": "https://dummyimage.com/400x400/000/fff?text=men28" + }, + { + "id": "mmen29", + "name": "men29", + "status": "on_sale", + "num_likes": 32, + "num_comments": 8, + "price": 84, + "photo": "https://dummyimage.com/400x400/000/fff?text=men29" + }, + { + "id": "mmen30", + "name": "men30", + "status": "sold_out", + "num_likes": 63, + "num_comments": 94, + "price": 54, + "photo": "https://dummyimage.com/400x400/000/fff?text=men30" + }, + { + "id": "mmen31", + "name": "men31", + "status": "sold_out", + "num_likes": 35, + "num_comments": 60, + "price": 7, + "photo": "https://dummyimage.com/400x400/000/fff?text=men31" + }, + { + "id": "mmen32", + "name": "men32", + "status": "sold_out", + "num_likes": 99, + "num_comments": 30, + "price": 34, + "photo": "https://dummyimage.com/400x400/000/fff?text=men32" + }, + { + "id": "mmen33", + "name": "men33", + "status": "sold_out", + "num_likes": 6, + "num_comments": 74, + "price": 19, + "photo": "https://dummyimage.com/400x400/000/fff?text=men33" + }, + { + "id": "mmen34", + "name": "men34", + "status": "sold_out", + "num_likes": 24, + "num_comments": 95, + "price": 96, + "photo": "https://dummyimage.com/400x400/000/fff?text=men34" + }, + { + "id": "mmen35", + "name": "men35", + "status": "sold_out", + "num_likes": 15, + "num_comments": 52, + "price": 7, + "photo": "https://dummyimage.com/400x400/000/fff?text=men35" + }, + { + "id": "mmen36", + "name": "men36", + "status": "sold_out", + "num_likes": 41, + "num_comments": 12, + "price": 6, + "photo": "https://dummyimage.com/400x400/000/fff?text=men36" + }, + { + "id": "mmen37", + "name": "men37", + "status": "sold_out", + "num_likes": 48, + "num_comments": 84, + "price": 42, + "photo": "https://dummyimage.com/400x400/000/fff?text=men37" + }, + { + "id": "mmen38", + "name": "men38", + "status": "sold_out", + "num_likes": 62, + "num_comments": 35, + "price": 48, + "photo": "https://dummyimage.com/400x400/000/fff?text=men38" + }, + { + "id": "mmen39", + "name": "men39", + "status": "on_sale", + "num_likes": 59, + "num_comments": 1, + "price": 82, + "photo": "https://dummyimage.com/400x400/000/fff?text=men39" + }, + { + "id": "mmen40", + "name": "men40", + "status": "on_sale", + "num_likes": 74, + "num_comments": 99, + "price": 8, + "photo": "https://dummyimage.com/400x400/000/fff?text=men40" + }, + { + "id": "mmen41", + "name": "men41", + "status": "on_sale", + "num_likes": 33, + "num_comments": 55, + "price": 27, + "photo": "https://dummyimage.com/400x400/000/fff?text=men41" + }, + { + "id": "mmen42", + "name": "men42", + "status": "sold_out", + "num_likes": 34, + "num_comments": 50, + "price": 27, + "photo": "https://dummyimage.com/400x400/000/fff?text=men42" + }, + { + "id": "mmen43", + "name": "men43", + "status": "sold_out", + "num_likes": 99, + "num_comments": 61, + "price": 8, + "photo": "https://dummyimage.com/400x400/000/fff?text=men43" + }, + { + "id": "mmen44", + "name": "men44", + "status": "on_sale", + "num_likes": 29, + "num_comments": 23, + "price": 35, + "photo": "https://dummyimage.com/400x400/000/fff?text=men44" + }, + { + "id": "mmen45", + "name": "men45", + "status": "sold_out", + "num_likes": 54, + "num_comments": 16, + "price": 94, + "photo": "https://dummyimage.com/400x400/000/fff?text=men45" + }, + { + "id": "mmen46", + "name": "men46", + "status": "on_sale", + "num_likes": 50, + "num_comments": 78, + "price": 1, + "photo": "https://dummyimage.com/400x400/000/fff?text=men46" + }, + { + "id": "mmen47", + "name": "men47", + "status": "on_sale", + "num_likes": 22, + "num_comments": 89, + "price": 5, + "photo": "https://dummyimage.com/400x400/000/fff?text=men47" + }, + { + "id": "mmen48", + "name": "men48", + "status": "sold_out", + "num_likes": 96, + "num_comments": 52, + "price": 74, + "photo": "https://dummyimage.com/400x400/000/fff?text=men48" + }, + { + "id": "mmen49", + "name": "men49", + "status": "on_sale", + "num_likes": 43, + "num_comments": 30, + "price": 35, + "photo": "https://dummyimage.com/400x400/000/fff?text=men49" + }, + { + "id": "mmen50", + "name": "men50", + "status": "on_sale", + "num_likes": 10, + "num_comments": 95, + "price": 78, + "photo": "https://dummyimage.com/400x400/000/fff?text=men50" + } +] diff --git a/mod_main/src/main/java/com/sum/main/ui/mercari/MercariFragment.kt b/mod_main/src/main/java/com/sum/main/ui/mercari/MercariFragment.kt deleted file mode 100644 index a0e0831..0000000 --- a/mod_main/src/main/java/com/sum/main/ui/mercari/MercariFragment.kt +++ /dev/null @@ -1,63 +0,0 @@ -package com.sum.main.ui.mercari; - -import android.os.Bundle -import android.view.View -import androidx.recyclerview.widget.LinearLayoutManager -import com.scwang.smart.refresh.layout.api.RefreshLayout -import com.scwang.smart.refresh.layout.listener.OnLoadMoreListener -import com.scwang.smart.refresh.layout.listener.OnRefreshListener -import com.sum.framework.base.BaseMvvmFragment -import com.sum.framework.decoration.NormalItemDecoration -import com.sum.framework.utils.dpToPx -import com.sum.main.databinding.FragmentMercariBinding -import com.sum.main.ui.mercari.adapter.MercariAdapter -import com.sum.main.ui.mercari.viewmodel.MercariViewModel - -class MercariFragment: BaseMvvmFragment(), - OnRefreshListener, - OnLoadMoreListener { - private lateinit var mercariAdapter: MercariAdapter - override fun initView(view: View, savedInstanceState: Bundle?) { - mBinding?.refreshLayout?.apply { - setEnableRefresh(true) - setEnableLoadMore(true) - setOnRefreshListener(this@MercariFragment) - setOnLoadMoreListener(this@MercariFragment) - autoRefresh() - } - mercariAdapter = MercariAdapter() - - val dp12 = dpToPx(12) - mBinding?.recyclerView?.apply { - layoutManager = LinearLayoutManager(requireContext()) - adapter = mercariAdapter - addItemDecoration(NormalItemDecoration().apply { - setBounds(left = dp12, top = dp12, right = dp12, bottom = dp12) - setLastBottom(true) - }) - } - } - - override fun onRefresh(refreshLayout: RefreshLayout) { - getFeeds() - } - - override fun onLoadMore(refreshLayout: RefreshLayout) { - } - - private fun getFeeds() { - mViewModel.getArticleList() - } - - override fun initData() { - mViewModel.mercicaListLiveData.observe(this) { - mercariAdapter.setData(it) - if (it.isNullOrEmpty()) { - //空视图 - - } - mBinding?.refreshLayout?.finishRefresh() - - } - } -} diff --git a/mod_main/src/main/java/com/sum/main/ui/mercari/MericariFragment.kt b/mod_main/src/main/java/com/sum/main/ui/mercari/MericariFragment.kt new file mode 100644 index 0000000..4075c6e --- /dev/null +++ b/mod_main/src/main/java/com/sum/main/ui/mercari/MericariFragment.kt @@ -0,0 +1,62 @@ +package com.sum.main.ui.mercari; + +import android.os.Bundle +import android.view.View +import androidx.recyclerview.widget.LinearLayoutManager +import com.scwang.smart.refresh.layout.api.RefreshLayout +import com.scwang.smart.refresh.layout.listener.OnLoadMoreListener +import com.scwang.smart.refresh.layout.listener.OnRefreshListener +import com.sum.framework.base.BaseMvvmFragment +import com.sum.framework.decoration.NormalItemDecoration +import com.sum.framework.utils.dpToPx +import com.sum.main.databinding.FragmentMercariBinding +import com.sum.main.ui.mercari.adapter.MercariAdapter +import com.sum.main.ui.mercari.viewmodel.MercariViewModel + +class MericariFragment : BaseMvvmFragment(), + OnRefreshListener, OnLoadMoreListener { + private lateinit var mercariAdapter: MercariAdapter + override fun initView(view: View, savedInstanceState: Bundle?) { + mBinding?.refreshLayout?.apply { + setEnableRefresh(true) + setEnableLoadMore(true) + setOnRefreshListener(this@MericariFragment) + setOnLoadMoreListener(this@MericariFragment) + autoRefresh() + } + mercariAdapter = MercariAdapter() + + val dp12 = dpToPx(12) + mBinding?.recyclerView?.apply { + layoutManager = LinearLayoutManager(requireContext()) + adapter = mercariAdapter + addItemDecoration(NormalItemDecoration().apply { + setBounds(left = dp12, top = dp12, right = dp12, bottom = dp12) + setLastBottom(true) + }) + } + } + + override fun onRefresh(refreshLayout: RefreshLayout) { + getFeeds() + } + + override fun onLoadMore(refreshLayout: RefreshLayout) { + } + + private fun getFeeds() { + mViewModel.getArticleList() + } + + override fun initData() { + mViewModel.mercicaListLiveData.observe(this) { + mercariAdapter.setData(it) + if (it.isNullOrEmpty()) { + //空视图 + + } + mBinding?.refreshLayout?.finishRefresh() + + } + } +} diff --git a/mod_main/src/main/java/com/sum/main/ui/mercari/adapter/MercariAdapter.kt b/mod_main/src/main/java/com/sum/main/ui/mercari/adapter/MercariAdapter.kt index ec142ce..b08c98e 100644 --- a/mod_main/src/main/java/com/sum/main/ui/mercari/adapter/MercariAdapter.kt +++ b/mod_main/src/main/java/com/sum/main/ui/mercari/adapter/MercariAdapter.kt @@ -6,6 +6,7 @@ import android.view.ViewGroup import com.sum.common.model.MercariModel import com.sum.framework.adapter.BaseBindViewHolder import com.sum.framework.adapter.BaseRecyclerViewAdapter +import com.sum.glide.setUrl import com.sum.main.databinding.LayoutHomeMercariItemBinding import java.lang.String import java.util.Locale @@ -21,12 +22,8 @@ class MercariAdapter : BaseRecyclerViewAdapter soldOut.visibility = View.VISIBLE else -> soldOut.visibility = View.GONE diff --git a/mod_main/src/main/res/navigation/mobile_navigation.xml b/mod_main/src/main/res/navigation/mobile_navigation.xml index 7fea3c6..d000ea9 100644 --- a/mod_main/src/main/res/navigation/mobile_navigation.xml +++ b/mod_main/src/main/res/navigation/mobile_navigation.xml @@ -31,7 +31,7 @@ \ No newline at end of file diff --git a/women.json b/women.json new file mode 100644 index 0000000..a908274 --- /dev/null +++ b/women.json @@ -0,0 +1,452 @@ +[ + { + "id": "mwomen1", + "name": "women1", + "status": "on_sale", + "num_likes": 33, + "num_comments": 41, + "price": 61, + "photo": "https://dummyimage.com/400x400/000/fff?text=women1" + }, + { + "id": "mwomen2", + "name": "women2", + "status": "on_sale", + "num_likes": 97, + "num_comments": 8, + "price": 82, + "photo": "https://dummyimage.com/400x400/000/fff?text=women2" + }, + { + "id": "mwomen3", + "name": "women3", + "status": "sold_out", + "num_likes": 45, + "num_comments": 97, + "price": 27, + "photo": "https://dummyimage.com/400x400/000/fff?text=women3" + }, + { + "id": "mwomen4", + "name": "women4", + "status": "on_sale", + "num_likes": 0, + "num_comments": 23, + "price": 19, + "photo": "https://dummyimage.com/400x400/000/fff?text=women4" + }, + { + "id": "mwomen5", + "name": "women5", + "status": "on_sale", + "num_likes": 29, + "num_comments": 94, + "price": 89, + "photo": "https://dummyimage.com/400x400/000/fff?text=women5" + }, + { + "id": "mwomen6", + "name": "women6", + "status": "sold_out", + "num_likes": 24, + "num_comments": 78, + "price": 64, + "photo": "https://dummyimage.com/400x400/000/fff?text=women6" + }, + { + "id": "mwomen7", + "name": "women7", + "status": "on_sale", + "num_likes": 22, + "num_comments": 69, + "price": 46, + "photo": "https://dummyimage.com/400x400/000/fff?text=women7" + }, + { + "id": "mwomen8", + "name": "women8", + "status": "on_sale", + "num_likes": 95, + "num_comments": 78, + "price": 63, + "photo": "https://dummyimage.com/400x400/000/fff?text=women8" + }, + { + "id": "mwomen9", + "name": "women9", + "status": "sold_out", + "num_likes": 69, + "num_comments": 17, + "price": 67, + "photo": "https://dummyimage.com/400x400/000/fff?text=women9" + }, + { + "id": "mwomen10", + "name": "women10", + "status": "on_sale", + "num_likes": 72, + "num_comments": 20, + "price": 36, + "photo": "https://dummyimage.com/400x400/000/fff?text=women10" + }, + { + "id": "mwomen11", + "name": "women11", + "status": "on_sale", + "num_likes": 71, + "num_comments": 73, + "price": 26, + "photo": "https://dummyimage.com/400x400/000/fff?text=women11" + }, + { + "id": "mwomen12", + "name": "women12", + "status": "sold_out", + "num_likes": 14, + "num_comments": 59, + "price": 78, + "photo": "https://dummyimage.com/400x400/000/fff?text=women12" + }, + { + "id": "mwomen13", + "name": "women13", + "status": "sold_out", + "num_likes": 68, + "num_comments": 98, + "price": 40, + "photo": "https://dummyimage.com/400x400/000/fff?text=women13" + }, + { + "id": "mwomen14", + "name": "women14", + "status": "on_sale", + "num_likes": 95, + "num_comments": 98, + "price": 13, + "photo": "https://dummyimage.com/400x400/000/fff?text=women14" + }, + { + "id": "mwomen15", + "name": "women15", + "status": "sold_out", + "num_likes": 3, + "num_comments": 33, + "price": 71, + "photo": "https://dummyimage.com/400x400/000/fff?text=women15" + }, + { + "id": "mwomen16", + "name": "women16", + "status": "on_sale", + "num_likes": 35, + "num_comments": 64, + "price": 41, + "photo": "https://dummyimage.com/400x400/000/fff?text=women16" + }, + { + "id": "mwomen17", + "name": "women17", + "status": "on_sale", + "num_likes": 82, + "num_comments": 46, + "price": 19, + "photo": "https://dummyimage.com/400x400/000/fff?text=women17" + }, + { + "id": "mwomen18", + "name": "women18", + "status": "sold_out", + "num_likes": 42, + "num_comments": 36, + "price": 29, + "photo": "https://dummyimage.com/400x400/000/fff?text=women18" + }, + { + "id": "mwomen19", + "name": "women19", + "status": "on_sale", + "num_likes": 32, + "num_comments": 9, + "price": 8, + "photo": "https://dummyimage.com/400x400/000/fff?text=women19" + }, + { + "id": "mwomen20", + "name": "women20", + "status": "on_sale", + "num_likes": 99, + "num_comments": 60, + "price": 43, + "photo": "https://dummyimage.com/400x400/000/fff?text=women20" + }, + { + "id": "mwomen21", + "name": "women21", + "status": "sold_out", + "num_likes": 76, + "num_comments": 1, + "price": 8, + "photo": "https://dummyimage.com/400x400/000/fff?text=women21" + }, + { + "id": "mwomen22", + "name": "women22", + "status": "on_sale", + "num_likes": 92, + "num_comments": 33, + "price": 88, + "photo": "https://dummyimage.com/400x400/000/fff?text=women22" + }, + { + "id": "mwomen23", + "name": "women23", + "status": "sold_out", + "num_likes": 6, + "num_comments": 15, + "price": 13, + "photo": "https://dummyimage.com/400x400/000/fff?text=women23" + }, + { + "id": "mwomen24", + "name": "women24", + "status": "sold_out", + "num_likes": 66, + "num_comments": 78, + "price": 47, + "photo": "https://dummyimage.com/400x400/000/fff?text=women24" + }, + { + "id": "mwomen25", + "name": "women25", + "status": "on_sale", + "num_likes": 6, + "num_comments": 25, + "price": 99, + "photo": "https://dummyimage.com/400x400/000/fff?text=women25" + }, + { + "id": "mwomen26", + "name": "women26", + "status": "on_sale", + "num_likes": 39, + "num_comments": 88, + "price": 18, + "photo": "https://dummyimage.com/400x400/000/fff?text=women26" + }, + { + "id": "mwomen27", + "name": "women27", + "status": "sold_out", + "num_likes": 71, + "num_comments": 42, + "price": 55, + "photo": "https://dummyimage.com/400x400/000/fff?text=women27" + }, + { + "id": "mwomen28", + "name": "women28", + "status": "on_sale", + "num_likes": 97, + "num_comments": 81, + "price": 57, + "photo": "https://dummyimage.com/400x400/000/fff?text=women28" + }, + { + "id": "mwomen29", + "name": "women29", + "status": "on_sale", + "num_likes": 1, + "num_comments": 11, + "price": 97, + "photo": "https://dummyimage.com/400x400/000/fff?text=women29" + }, + { + "id": "mwomen30", + "name": "women30", + "status": "sold_out", + "num_likes": 65, + "num_comments": 44, + "price": 73, + "photo": "https://dummyimage.com/400x400/000/fff?text=women30" + }, + { + "id": "mwomen31", + "name": "women31", + "status": "sold_out", + "num_likes": 94, + "num_comments": 52, + "price": 6, + "photo": "https://dummyimage.com/400x400/000/fff?text=women31" + }, + { + "id": "mwomen32", + "name": "women32", + "status": "sold_out", + "num_likes": 28, + "num_comments": 81, + "price": 59, + "photo": "https://dummyimage.com/400x400/000/fff?text=women32" + }, + { + "id": "mwomen33", + "name": "women33", + "status": "sold_out", + "num_likes": 48, + "num_comments": 47, + "price": 68, + "photo": "https://dummyimage.com/400x400/000/fff?text=women33" + }, + { + "id": "mwomen34", + "name": "women34", + "status": "sold_out", + "num_likes": 89, + "num_comments": 25, + "price": 36, + "photo": "https://dummyimage.com/400x400/000/fff?text=women34" + }, + { + "id": "mwomen35", + "name": "women35", + "status": "sold_out", + "num_likes": 13, + "num_comments": 21, + "price": 83, + "photo": "https://dummyimage.com/400x400/000/fff?text=women35" + }, + { + "id": "mwomen36", + "name": "women36", + "status": "sold_out", + "num_likes": 56, + "num_comments": 97, + "price": 42, + "photo": "https://dummyimage.com/400x400/000/fff?text=women36" + }, + { + "id": "mwomen37", + "name": "women37", + "status": "sold_out", + "num_likes": 81, + "num_comments": 36, + "price": 28, + "photo": "https://dummyimage.com/400x400/000/fff?text=women37" + }, + { + "id": "mwomen38", + "name": "women38", + "status": "sold_out", + "num_likes": 16, + "num_comments": 29, + "price": 59, + "photo": "https://dummyimage.com/400x400/000/fff?text=women38" + }, + { + "id": "mwomen39", + "name": "women39", + "status": "sold_out", + "num_likes": 6, + "num_comments": 80, + "price": 3, + "photo": "https://dummyimage.com/400x400/000/fff?text=women39" + }, + { + "id": "mwomen40", + "name": "women40", + "status": "on_sale", + "num_likes": 91, + "num_comments": 24, + "price": 1, + "photo": "https://dummyimage.com/400x400/000/fff?text=women40" + }, + { + "id": "mwomen41", + "name": "women41", + "status": "on_sale", + "num_likes": 18, + "num_comments": 36, + "price": 84, + "photo": "https://dummyimage.com/400x400/000/fff?text=women41" + }, + { + "id": "mwomen42", + "name": "women42", + "status": "sold_out", + "num_likes": 27, + "num_comments": 40, + "price": 29, + "photo": "https://dummyimage.com/400x400/000/fff?text=women42" + }, + { + "id": "mwomen43", + "name": "women43", + "status": "sold_out", + "num_likes": 41, + "num_comments": 96, + "price": 39, + "photo": "https://dummyimage.com/400x400/000/fff?text=women43" + }, + { + "id": "mwomen44", + "name": "women44", + "status": "on_sale", + "num_likes": 7, + "num_comments": 12, + "price": 64, + "photo": "https://dummyimage.com/400x400/000/fff?text=women44" + }, + { + "id": "mwomen45", + "name": "women45", + "status": "sold_out", + "num_likes": 89, + "num_comments": 17, + "price": 72, + "photo": "https://dummyimage.com/400x400/000/fff?text=women45" + }, + { + "id": "mwomen46", + "name": "women46", + "status": "on_sale", + "num_likes": 22, + "num_comments": 65, + "price": 29, + "photo": "https://dummyimage.com/400x400/000/fff?text=women46" + }, + { + "id": "mwomen47", + "name": "women47", + "status": "on_sale", + "num_likes": 35, + "num_comments": 77, + "price": 10, + "photo": "https://dummyimage.com/400x400/000/fff?text=women47" + }, + { + "id": "mwomen48", + "name": "women48", + "status": "sold_out", + "num_likes": 28, + "num_comments": 39, + "price": 98, + "photo": "https://dummyimage.com/400x400/000/fff?text=women48" + }, + { + "id": "mwomen49", + "name": "women49", + "status": "on_sale", + "num_likes": 29, + "num_comments": 68, + "price": 51, + "photo": "https://dummyimage.com/400x400/000/fff?text=women49" + }, + { + "id": "mwomen50", + "name": "women50", + "status": "on_sale", + "num_likes": 76, + "num_comments": 71, + "price": 0, + "photo": "https://dummyimage.com/400x400/000/fff?text=women50" + } +] From 3b5c39b5b920fc0c036284e174dc568f6619dc9e Mon Sep 17 00:00:00 2001 From: gongzelong Date: Sun, 8 Sep 2024 22:50:44 +0800 Subject: [PATCH 7/7] Add document --- Development_Guild.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Development_Guild.md diff --git a/Development_Guild.md b/Development_Guild.md new file mode 100644 index 0000000..7382dfa --- /dev/null +++ b/Development_Guild.md @@ -0,0 +1,28 @@ +IDE: Android Studio + +Android Studio Koala | 2024.1.1 Patch 2 +Build #AI-241.18034.62.2411.12169540, built on August 1, 2024 +Runtime version: 17.0.11+0-17.0.11b1207.24-11852314 x86_64 +VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. +macOS 14.6.1 +GC: G1 Young Generation, G1 Old Generation +Memory: 4096M +Cores: 12 +Metal Rendering is ON + +Java: 11.0.11 + + + +Gradle: 7.5 + +AGP: 7.4.2 + + + +``` +plugins { + id 'com.android.application' version '7.4.2' apply false + id 'com.android.library' version '7.4.2' apply false + id 'org.jetbrains.kotlin.android' version '1.6.21' apply false +``` \ No newline at end of file