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/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 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) 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/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/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', 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 b077bbd..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 { @@ -56,6 +57,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/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_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_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_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_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..8139b42 --- /dev/null +++ b/lib_network/src/main/java/com/sum/network/api/MercicaAPI.kt @@ -0,0 +1,13 @@ +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?): MutableList? + @GET + suspend fun getFeedsWithBaseResponse(@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/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/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/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_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_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/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_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 new file mode 100644 index 0000000..b08c98e --- /dev/null +++ b/mod_main/src/main/java/com/sum/main/ui/mercari/adapter/MercariAdapter.kt @@ -0,0 +1,43 @@ +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.glide.setUrl +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) + photo.setUrl(data.photo) + + 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..574ca4b --- /dev/null +++ b/mod_main/src/main/java/com/sum/main/ui/mercari/viewmodel/MercariViewModel.kt @@ -0,0 +1,47 @@ +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.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 +// } +// }) +// 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 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 0000000..f0306f2 Binary files /dev/null and b/mod_main/src/main/res/drawable/badge_soldout.png differ 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 0000000..1ec4414 Binary files /dev/null and b/mod_main/src/main/res/drawable/bg_exhibit.png differ diff --git a/mod_main/src/main/res/drawable/ic_camera.png b/mod_main/src/main/res/drawable/ic_camera.png new file mode 100644 index 0000000..777658e Binary files /dev/null and b/mod_main/src/main/res/drawable/ic_camera.png differ diff --git a/mod_main/src/main/res/drawable/icon_comment.png b/mod_main/src/main/res/drawable/icon_comment.png new file mode 100644 index 0000000..7fad9e3 Binary files /dev/null and b/mod_main/src/main/res/drawable/icon_comment.png differ diff --git a/mod_main/src/main/res/drawable/icon_launcher.png b/mod_main/src/main/res/drawable/icon_launcher.png new file mode 100644 index 0000000..26f5e78 Binary files /dev/null and b/mod_main/src/main/res/drawable/icon_launcher.png differ diff --git a/mod_main/src/main/res/drawable/icon_like.png b/mod_main/src/main/res/drawable/icon_like.png new file mode 100644 index 0000000..2bc0647 Binary files /dev/null and b/mod_main/src/main/res/drawable/icon_like.png differ 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..d000ea9 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 短视频 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 @@ - + 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" + } +]