From 1d1eee5cdcce167441727d8ae3553ddcf39eeec0 Mon Sep 17 00:00:00 2001
From: 86157 <2106710376@qq.com>
Date: Tue, 4 Apr 2023 16:52:06 +0800
Subject: [PATCH] Initial commit
---
.gitignore | 14 ++
.idea/.gitignore | 3 +
.idea/.name | 1 +
.idea/codeStyles/Project.xml | 116 +++++++++
.idea/compiler.xml | 6 +
.idea/deploymentTargetDropDown.xml | 28 +++
.idea/encodings.xml | 6 +
.idea/gradle.xml | 21 ++
.idea/jarRepositories.xml | 25 ++
.idea/misc.xml | 84 +++++++
app/.gitignore | 1 +
app/build.gradle | 30 +++
app/proguard-rules.pro | 21 ++
.../cn/ExampleInstrumentedTest.java | 27 ++
app/src/main/AndroidManifest.xml | 24 ++
.../cn/activity/CategoryActivity.java | 98 ++++++++
.../yemamacake/cn/activity/MainActivity.java | 45 ++++
.../cn/activity/RegisterActivity.java | 145 +++++++++++
.../yemamacake/cn/activity/UserActivity.java | 66 +++++
.../com/yemamacake/cn/adapter/Myadapter.java | 69 ++++++
.../com/yemamacake/cn/entity/OrangeUser.java | 59 +++++
.../com/yemamacake/cn/entity/Product.java | 47 ++++
.../cn/fragment/SetDetailFragment.java | 56 +++++
app/src/main/java/com/yemamacake/cn/img.png | Bin 0 -> 100991 bytes
.../drawable-v24/ic_launcher_foreground.xml | 34 +++
app/src/main/res/drawable/address.png | Bin 0 -> 1028 bytes
app/src/main/res/drawable/arrow_down.png | Bin 0 -> 368 bytes
app/src/main/res/drawable/arrow_right.png | Bin 0 -> 233 bytes
app/src/main/res/drawable/button_login.xml | 15 ++
app/src/main/res/drawable/button_register.xml | 14 ++
app/src/main/res/drawable/cake.png | Bin 0 -> 1079220 bytes
app/src/main/res/drawable/city.png | Bin 0 -> 790 bytes
.../res/drawable/ic_launcher_background.xml | 170 +++++++++++++
app/src/main/res/drawable/img.png | Bin 0 -> 100991 bytes
app/src/main/res/drawable/img_1.png | Bin 0 -> 242280 bytes
app/src/main/res/drawable/img_2.png | Bin 0 -> 1478231 bytes
app/src/main/res/drawable/img_3.png | Bin 0 -> 1478231 bytes
app/src/main/res/drawable/img_4.png | Bin 0 -> 840518 bytes
app/src/main/res/drawable/img_5.png | Bin 0 -> 1022472 bytes
app/src/main/res/drawable/img_6.png | Bin 0 -> 474807 bytes
app/src/main/res/drawable/img_7.png | Bin 0 -> 474807 bytes
app/src/main/res/drawable/img_8.png | Bin 0 -> 103698 bytes
app/src/main/res/drawable/juzi.jpg | Bin 0 -> 15161 bytes
app/src/main/res/drawable/orange.png | Bin 0 -> 6129 bytes
app/src/main/res/drawable/password.png | Bin 0 -> 1462 bytes
app/src/main/res/drawable/red.png | Bin 0 -> 94679 bytes
app/src/main/res/drawable/search.png | Bin 0 -> 1299 bytes
app/src/main/res/drawable/setting.png | Bin 0 -> 1101 bytes
app/src/main/res/drawable/sex.png | Bin 0 -> 1509 bytes
.../res/drawable/spinner_drop_down_shape.xml | 16 ++
app/src/main/res/drawable/sure_apssword.png | Bin 0 -> 799 bytes
app/src/main/res/drawable/user.png | Bin 0 -> 2173 bytes
app/src/main/res/drawable/user_account.png | Bin 0 -> 1045 bytes
app/src/main/res/drawable/user_cake.jpg | Bin 0 -> 37672 bytes
app/src/main/res/drawable/user_general.png | Bin 0 -> 402 bytes
app/src/main/res/drawable/user_icon.png | Bin 0 -> 5995 bytes
app/src/main/res/drawable/user_pay.png | Bin 0 -> 554 bytes
app/src/main/res/drawable/user_ps.jpg | Bin 0 -> 33237 bytes
app/src/main/res/drawable/user_sex.png | Bin 0 -> 1123 bytes
app/src/main/res/drawable/youzi.png | Bin 0 -> 134602 bytes
app/src/main/res/layout/activity_main.xml | 18 ++
app/src/main/res/layout/category_detail.xml | 22 ++
.../res/layout/category_detail_content.xml | 42 ++++
.../main/res/layout/category_list_item.xml | 14 ++
app/src/main/res/layout/content_category.xml | 45 ++++
app/src/main/res/layout/content_user.xml | 231 ++++++++++++++++++
app/src/main/res/layout/user_login.xml | 100 ++++++++
app/src/main/res/layout/user_register.xml | 168 +++++++++++++
.../res/mipmap-anydpi-v26/ic_launcher.xml | 5 +
.../mipmap-anydpi-v26/ic_launcher_round.xml | 5 +
app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2963 bytes
.../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 4905 bytes
app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2060 bytes
.../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2783 bytes
app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4490 bytes
.../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 6895 bytes
.../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6387 bytes
.../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 10413 bytes
.../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9128 bytes
.../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 15132 bytes
app/src/main/res/values/colors.xml | 6 +
app/src/main/res/values/strings.xml | 6 +
app/src/main/res/values/styles.xml | 11 +
.../com/orangesale/cn/ExampleUnitTest.java | 17 ++
build.gradle | 27 ++
gradle.properties | 21 ++
gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes
gradle/wrapper/gradle-wrapper.properties | 6 +
gradlew | 172 +++++++++++++
gradlew.bat | 84 +++++++
settings.gradle | 2 +
91 files changed, 2243 insertions(+)
create mode 100644 .gitignore
create mode 100644 .idea/.gitignore
create mode 100644 .idea/.name
create mode 100644 .idea/codeStyles/Project.xml
create mode 100644 .idea/compiler.xml
create mode 100644 .idea/deploymentTargetDropDown.xml
create mode 100644 .idea/encodings.xml
create mode 100644 .idea/gradle.xml
create mode 100644 .idea/jarRepositories.xml
create mode 100644 .idea/misc.xml
create mode 100644 app/.gitignore
create mode 100644 app/build.gradle
create mode 100644 app/proguard-rules.pro
create mode 100644 app/src/androidTest/java/com/yemamacake/cn/ExampleInstrumentedTest.java
create mode 100644 app/src/main/AndroidManifest.xml
create mode 100644 app/src/main/java/com/yemamacake/cn/activity/CategoryActivity.java
create mode 100644 app/src/main/java/com/yemamacake/cn/activity/MainActivity.java
create mode 100644 app/src/main/java/com/yemamacake/cn/activity/RegisterActivity.java
create mode 100644 app/src/main/java/com/yemamacake/cn/activity/UserActivity.java
create mode 100644 app/src/main/java/com/yemamacake/cn/adapter/Myadapter.java
create mode 100644 app/src/main/java/com/yemamacake/cn/entity/OrangeUser.java
create mode 100644 app/src/main/java/com/yemamacake/cn/entity/Product.java
create mode 100644 app/src/main/java/com/yemamacake/cn/fragment/SetDetailFragment.java
create mode 100644 app/src/main/java/com/yemamacake/cn/img.png
create mode 100644 app/src/main/res/drawable-v24/ic_launcher_foreground.xml
create mode 100644 app/src/main/res/drawable/address.png
create mode 100644 app/src/main/res/drawable/arrow_down.png
create mode 100644 app/src/main/res/drawable/arrow_right.png
create mode 100644 app/src/main/res/drawable/button_login.xml
create mode 100644 app/src/main/res/drawable/button_register.xml
create mode 100644 app/src/main/res/drawable/cake.png
create mode 100644 app/src/main/res/drawable/city.png
create mode 100644 app/src/main/res/drawable/ic_launcher_background.xml
create mode 100644 app/src/main/res/drawable/img.png
create mode 100644 app/src/main/res/drawable/img_1.png
create mode 100644 app/src/main/res/drawable/img_2.png
create mode 100644 app/src/main/res/drawable/img_3.png
create mode 100644 app/src/main/res/drawable/img_4.png
create mode 100644 app/src/main/res/drawable/img_5.png
create mode 100644 app/src/main/res/drawable/img_6.png
create mode 100644 app/src/main/res/drawable/img_7.png
create mode 100644 app/src/main/res/drawable/img_8.png
create mode 100644 app/src/main/res/drawable/juzi.jpg
create mode 100644 app/src/main/res/drawable/orange.png
create mode 100644 app/src/main/res/drawable/password.png
create mode 100644 app/src/main/res/drawable/red.png
create mode 100644 app/src/main/res/drawable/search.png
create mode 100644 app/src/main/res/drawable/setting.png
create mode 100644 app/src/main/res/drawable/sex.png
create mode 100644 app/src/main/res/drawable/spinner_drop_down_shape.xml
create mode 100644 app/src/main/res/drawable/sure_apssword.png
create mode 100644 app/src/main/res/drawable/user.png
create mode 100644 app/src/main/res/drawable/user_account.png
create mode 100644 app/src/main/res/drawable/user_cake.jpg
create mode 100644 app/src/main/res/drawable/user_general.png
create mode 100644 app/src/main/res/drawable/user_icon.png
create mode 100644 app/src/main/res/drawable/user_pay.png
create mode 100644 app/src/main/res/drawable/user_ps.jpg
create mode 100644 app/src/main/res/drawable/user_sex.png
create mode 100644 app/src/main/res/drawable/youzi.png
create mode 100644 app/src/main/res/layout/activity_main.xml
create mode 100644 app/src/main/res/layout/category_detail.xml
create mode 100644 app/src/main/res/layout/category_detail_content.xml
create mode 100644 app/src/main/res/layout/category_list_item.xml
create mode 100644 app/src/main/res/layout/content_category.xml
create mode 100644 app/src/main/res/layout/content_user.xml
create mode 100644 app/src/main/res/layout/user_login.xml
create mode 100644 app/src/main/res/layout/user_register.xml
create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png
create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.png
create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png
create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.png
create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png
create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png
create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
create mode 100644 app/src/main/res/values/colors.xml
create mode 100644 app/src/main/res/values/strings.xml
create mode 100644 app/src/main/res/values/styles.xml
create mode 100644 app/src/test/java/com/orangesale/cn/ExampleUnitTest.java
create mode 100644 build.gradle
create mode 100644 gradle.properties
create mode 100644 gradle/wrapper/gradle-wrapper.jar
create mode 100644 gradle/wrapper/gradle-wrapper.properties
create mode 100644 gradlew
create mode 100644 gradlew.bat
create mode 100644 settings.gradle
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..603b140
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,14 @@
+*.iml
+.gradle
+/local.properties
+/.idea/caches
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+/.idea/navEditor.xml
+/.idea/assetWizardSettings.xml
+.DS_Store
+/build
+/captures
+.externalNativeBuild
+.cxx
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..3e92eab
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+yemamacake
\ No newline at end of file
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 0000000..681f41a
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ xmlns:android
+
+ ^$
+
+
+
+
+
+
+
+
+ xmlns:.*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*:id
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:name
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ name
+
+ ^$
+
+
+
+
+
+
+
+
+ style
+
+ ^$
+
+
+
+
+
+
+
+
+ .*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*
+
+ http://schemas.android.com/apk/res/android
+
+
+ ANDROID_ATTRIBUTE_ORDER
+
+
+
+
+
+
+ .*
+
+ .*
+
+
+ BY_NAME
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..fb7f4a8
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
new file mode 100644
index 0000000..ae331be
--- /dev/null
+++ b/.idea/deploymentTargetDropDown.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..97626ba
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
new file mode 100644
index 0000000..909c0df
--- /dev/null
+++ b/.idea/gradle.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..a5f05cd
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..bd7a7a3
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Android
+
+
+ ComplianceLintAndroid
+
+
+ CorrectnessLintAndroid
+
+
+ LintAndroid
+
+
+ PerformanceLintAndroid
+
+
+ UsabilityLintAndroid
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/.gitignore b/app/.gitignore
new file mode 100644
index 0000000..796b96d
--- /dev/null
+++ b/app/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/app/build.gradle b/app/build.gradle
new file mode 100644
index 0000000..010018f
--- /dev/null
+++ b/app/build.gradle
@@ -0,0 +1,30 @@
+apply plugin: 'com.android.application'
+
+android {
+ compileSdkVersion 33
+ buildToolsVersion "29.0.2"
+ defaultConfig {
+ applicationId "com.orangesale.cn"
+ minSdkVersion 26
+ targetSdkVersion 33
+ versionCode 1
+ versionName "1.0"
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation 'androidx.appcompat:appcompat:1.0.2'
+ implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
+ testImplementation 'junit:junit:4.12'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.0'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
+ implementation 'liji.library.dev:citypickerview:1.1.0'
+}
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
new file mode 100644
index 0000000..f1b4245
--- /dev/null
+++ b/app/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/app/src/androidTest/java/com/yemamacake/cn/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/yemamacake/cn/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..713d673
--- /dev/null
+++ b/app/src/androidTest/java/com/yemamacake/cn/ExampleInstrumentedTest.java
@@ -0,0 +1,27 @@
+package com.orangesale.cn;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+
+ assertEquals("com.orangesale.cn", appContext.getPackageName());
+ }
+}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..58d5840
--- /dev/null
+++ b/app/src/main/AndroidManifest.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/yemamacake/cn/activity/CategoryActivity.java b/app/src/main/java/com/yemamacake/cn/activity/CategoryActivity.java
new file mode 100644
index 0000000..a1f2ad8
--- /dev/null
+++ b/app/src/main/java/com/yemamacake/cn/activity/CategoryActivity.java
@@ -0,0 +1,98 @@
+package com.yemamacake.cn.activity;
+
+import android.app.Activity;
+import android.app.FragmentManager;
+import android.app.FragmentTransaction;
+import android.os.Bundle;
+import android.widget.ListView;
+
+import androidx.annotation.Nullable;
+
+import com.yemamacake.cn.R;
+import com.yemamacake.cn.adapter.Myadapter;
+import com.yemamacake.cn.entity.Product;
+import com.yemamacake.cn.fragment.SetDetailFragment;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+public class CategoryActivity extends Activity {
+ private OnChangeListener onchangedListener;
+ private List productList;
+ private List productCategory=new ArrayList <>();
+ private ListView titleList;
+ private Myadapter adapter;
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.content_category);
+ initData();//初始化数据
+ init();
+ SetDetailFragment fragment = new SetDetailFragment();
+ FragmentManager fragmentManager = getFragmentManager();
+ FragmentTransaction transaction = fragmentManager.beginTransaction();
+ transaction.replace(R.id.category_detail,fragment);
+ transaction.commit();
+ titleList.setOnItemClickListener((parent, view, position, id) -> {
+ adapter.setSelectedPosition(position);
+ adapter.notifyDataSetInvalidated();
+ if (onchangedListener != null) {
+ onchangedListener.changeText(productList.get(position));
+ }
+ });
+
+ }
+
+ private void initData() {
+ productList= new ArrayList<>();//在此进行新建
+ productCategory.add("美味面包");
+ productCategory.add("酥松蛋糕");
+ productCategory.add("甜品慕斯");
+ productCategory.add("生日蛋糕");
+ Product product = new Product();
+ product.setProductIntroduce("选用高筋面粉、优质牛奶制作,不加一滴水");
+ product.setImageUrlId(R.drawable.img_4);
+ product.setProductName("手工奶香吐司");
+ product.setProductPrice(new BigDecimal("9.9"));//需将9.9进行bigdecimal类型转化
+ Product product1 = new Product();
+ product1.setProductIntroduce("选用低筋面粉、新鲜草莓制作,满满果粒get!");
+ product1.setImageUrlId(R.drawable.img_5);
+ product1.setProductName("草莓戚风");
+ product1.setProductPrice(new BigDecimal("15.9"));
+ Product product2 = new Product();
+ product2.setProductIntroduce("动物奶油、新鲜芒果,诚意满满");
+ product2.setImageUrlId(R.drawable.img_6);
+ product2.setProductName("芒果盒子");
+ product2.setProductPrice(new BigDecimal("10.9"));
+ Product product3=new Product();
+ product3.setProductIntroduce("我们承诺,纯动物奶油、新鲜水果,只为您带来最好的体验");
+ product3.setProductPrice(new BigDecimal(99));
+ product3.setProductName("八寸水果生日蛋糕");
+ product3.setImageUrlId(R.drawable.cake);
+ productList.add(product);
+ productList.add(product1);
+ productList.add(product2);
+ productList.add(product3);
+
+
+
+
+ }
+
+ private void init()
+ {
+ titleList = findViewById(R.id.category_title_list);
+ adapter=new Myadapter(productCategory,CategoryActivity.this);
+ titleList.setAdapter(adapter);
+ }
+
+ public void setOnChangeListener(OnChangeListener onChangeListener) {
+ this.onchangedListener = onChangeListener;
+ }
+
+ public interface OnChangeListener {
+ void changeText(Product product);
+ }
+
+}
diff --git a/app/src/main/java/com/yemamacake/cn/activity/MainActivity.java b/app/src/main/java/com/yemamacake/cn/activity/MainActivity.java
new file mode 100644
index 0000000..c594972
--- /dev/null
+++ b/app/src/main/java/com/yemamacake/cn/activity/MainActivity.java
@@ -0,0 +1,45 @@
+package com.yemamacake.cn.activity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.yemamacake.cn.R;
+
+public class MainActivity extends AppCompatActivity implements View.OnClickListener {
+ private Button registerButton, loginButton;
+ private EditText usernameText, paswdEdit;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.user_login);
+ init();
+ }
+
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.register:
+ Intent intent = new Intent(MainActivity.this, RegisterActivity.class);
+ startActivity(intent);
+ break;
+ case R.id.login:
+ break;
+ }
+ }
+
+ //界面组件初始化
+ private void init() {
+ usernameText = findViewById(R.id.username);
+ paswdEdit = findViewById(R.id.password);
+ loginButton = findViewById(R.id.login);
+ loginButton.setOnClickListener(this);
+ registerButton = findViewById(R.id.register);
+ registerButton.setOnClickListener(this);
+ }
+}
diff --git a/app/src/main/java/com/yemamacake/cn/activity/RegisterActivity.java b/app/src/main/java/com/yemamacake/cn/activity/RegisterActivity.java
new file mode 100644
index 0000000..5c5fe8e
--- /dev/null
+++ b/app/src/main/java/com/yemamacake/cn/activity/RegisterActivity.java
@@ -0,0 +1,145 @@
+package com.yemamacake.cn.activity;
+
+import android.content.Intent;
+import android.graphics.Color;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.RadioGroup;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.lljjcoder.citypickerview.widget.CityPicker;
+import com.yemamacake.cn.R;
+
+public class RegisterActivity extends AppCompatActivity implements View.OnClickListener, RadioGroup.OnCheckedChangeListener {
+ private EditText usernameEdit, passwordEdit, surePasswordEdit;
+ private TextView cityText;
+ private CityPicker cityPicker;
+ private Button regButton;
+ private RadioGroup sexGroup;
+ private String sexStr="男";
+
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.user_register);
+ init();
+ }
+
+ /**
+ * 界面组件初始化
+ */
+ private void init() {
+ cityText = findViewById(R.id.reg_province);
+ cityText.setOnClickListener(this);
+ usernameEdit = findViewById(R.id.reg_username);
+ passwordEdit = findViewById(R.id.reg_password);
+ surePasswordEdit = findViewById(R.id.reg_sure_password);
+ regButton = findViewById(R.id.reg_register);
+ regButton.setOnClickListener(this);
+ sexGroup = findViewById(R.id.sex);
+ sexGroup.setOnCheckedChangeListener(this);
+
+ }
+
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.reg_province:
+ initCityPicker();
+ cityPicker.show();
+ break;
+ case R.id.reg_register:
+ //注册验证方法
+ validateRegister();
+ break;
+
+ }
+ }
+
+ /**
+ * 初始化城市选择器
+ */
+ public void initCityPicker() {
+ cityPicker = new CityPicker.Builder(RegisterActivity.this)
+ .textSize(16)
+ .title("地址选择")
+ .backgroundPop(0xa0000000)
+ .titleBackgroundColor("#EFB81C")
+ .titleTextColor("#000000")
+ .backgroundPop(0xa0000000)
+ .confirTextColor("#000000")
+ .cancelTextColor("#000000")
+ .province("江西省")
+ .city("赣州市")
+ .district("章贡区")
+ .textColor(Color.parseColor("#000000"))
+ .provinceCyclic(true)
+ .cityCyclic(false)
+ .districtCyclic(false)
+ .visibleItemsCount(7)
+ .itemPadding(10)
+ .onlyShowProvinceAndCity(false)
+ .build();
+ cityPicker.setOnCityItemClickListener(new CityPicker.OnCityItemClickListener() {
+ @Override
+ public void onSelected(String... strings) {
+ String province = strings[0];
+ String city = strings[1];
+ String district = strings[2];
+ cityText.setText(String.format("%s %s %s", province, city, district));
+ }
+
+ @Override
+ public void onCancel() {
+ }
+ });
+
+ }
+
+ /**
+ * 注册验证
+ */
+ public void validateRegister() {
+ Intent intent = new Intent(RegisterActivity.this, UserActivity.class);
+ String username = usernameEdit.getText().toString();
+ String password = passwordEdit.getText().toString();
+ String surePassword = surePasswordEdit.getText().toString();
+ String city = cityText.getText().toString();
+ //判断两次密码是否输入一致
+ if (password.equals(surePassword)) {
+ //这里也可以再进行其它的验证,如是否符合要求等,符合就进行插入数据库操作
+ if (!username.equals("") || !password.equals("")) {
+ if (!city.equals("")) {
+ Bundle bundle = new Bundle();
+ bundle.putString("username", username);
+ bundle.putString("password", password);
+ bundle.putString("sex", sexStr);
+ bundle.putString("city", city);
+ intent.putExtras(bundle);
+ startActivity(intent);
+ } else {
+ Toast.makeText(RegisterActivity.this, "请选择地址", Toast.LENGTH_SHORT).show();
+ }
+ } else {
+ Toast.makeText(RegisterActivity.this, "账号或密码未填写", Toast.LENGTH_SHORT).show();
+ }
+ } else {
+ Toast.makeText(RegisterActivity.this, "两次密码输入不一致", Toast.LENGTH_SHORT).show();
+ }
+
+
+ }
+
+ @Override
+ public void onCheckedChanged(RadioGroup group, int checkedId) {
+ //根据用户选择来改变sex的值
+ sexStr = checkedId == R.id.reg_man ? "男" : "女";
+ }
+}
diff --git a/app/src/main/java/com/yemamacake/cn/activity/UserActivity.java b/app/src/main/java/com/yemamacake/cn/activity/UserActivity.java
new file mode 100644
index 0000000..13d5b9f
--- /dev/null
+++ b/app/src/main/java/com/yemamacake/cn/activity/UserActivity.java
@@ -0,0 +1,66 @@
+package com.yemamacake.cn.activity;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+
+import com.yemamacake.cn.R;
+
+public class UserActivity extends Activity implements View.OnClickListener {
+ private ImageView userIconImage;
+ private TextView usernameText, userSexText, userCityText;
+ private LinearLayout usernameLine, userSexline, userCityLine, userPayLine, userSettingLine, userGeneralLine, userSearchProductLine;
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.content_user);
+ init();
+ }
+
+ /**
+ * 组件初始化
+ */
+ private void init() {
+ userIconImage = findViewById(R.id.user_icon);
+ usernameText = findViewById(R.id.user_username);
+ userSexText = findViewById(R.id.user_sex);
+ userCityText = findViewById(R.id.user_city);
+ usernameLine = findViewById(R.id.user_username_line);
+ userSexline = findViewById(R.id.user_sex_line);
+ userCityLine = findViewById(R.id.user_city_line);
+ userPayLine = findViewById(R.id.user_pay);
+ userSettingLine = findViewById(R.id.user_setting);
+ userGeneralLine = findViewById(R.id.user_general);
+ userSearchProductLine = findViewById(R.id.user_searchProduct);
+ userSearchProductLine.setOnClickListener(this);
+ setData();
+ }
+
+ /**
+ * 组件赋值
+ */
+ private void setData() {
+ Intent intent = UserActivity.this.getIntent();
+ Bundle bundle = intent.getExtras();
+ usernameText.setText(String.format("用户名:%s", bundle.getString("username")));
+ userSexText.setText(String.format("性别:%s", bundle.getString("sex")));
+ userCityText.setText(String.format("城市:%s", bundle.getString("city")));
+ }
+
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.user_searchProduct:
+ Intent intent1 = new Intent(UserActivity.this, CategoryActivity.class);
+ startActivity(intent1);
+ break;
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yemamacake/cn/adapter/Myadapter.java b/app/src/main/java/com/yemamacake/cn/adapter/Myadapter.java
new file mode 100644
index 0000000..febf8c7
--- /dev/null
+++ b/app/src/main/java/com/yemamacake/cn/adapter/Myadapter.java
@@ -0,0 +1,69 @@
+package com.yemamacake.cn.adapter;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.TextView;
+
+import com.yemamacake.cn.R;
+
+import java.util.List;
+
+public class Myadapter extends BaseAdapter {
+ private List productCategory;
+ LayoutInflater layoutInflater;
+ private int selectionPosition=-1;
+ public Myadapter(List productCategory, Context context)
+ {
+ this.productCategory=productCategory;
+ this.layoutInflater = LayoutInflater.from(context);
+
+ } @Override
+ public int getCount() {
+ return productCategory.size();
+ }
+
+ @Override
+ public Object getItem(int position) {
+ return productCategory.get(position);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ ViewHolder viewHolder = null;
+ if (convertView == null) {
+ viewHolder = new ViewHolder();
+ convertView = layoutInflater.inflate(R.layout.category_list_item, null);
+ Log.i("adapts", "getView: " + convertView);
+ viewHolder.tv = convertView.findViewById(R.id.categor_titles);
+ convertView.setTag(viewHolder);
+ } else {
+ viewHolder = (ViewHolder) convertView.getTag();
+ }
+ viewHolder.tv.setText(productCategory.get(position));
+ if (selectionPosition == position) {
+ viewHolder.tv.setBackgroundColor(Color.RED);} else {
+ viewHolder.tv.setBackgroundColor(Color.WHITE);
+ }
+ return convertView;
+
+ }
+ public void setSelectedPosition(int position) {
+ this.selectionPosition = position;
+ }
+
+ class ViewHolder
+ {
+ TextView tv;
+ }
+
+}
diff --git a/app/src/main/java/com/yemamacake/cn/entity/OrangeUser.java b/app/src/main/java/com/yemamacake/cn/entity/OrangeUser.java
new file mode 100644
index 0000000..459ac7d
--- /dev/null
+++ b/app/src/main/java/com/yemamacake/cn/entity/OrangeUser.java
@@ -0,0 +1,59 @@
+package com.yemamacake.cn.entity;
+
+public class OrangeUser {
+ private Integer id;
+ private String username;
+ private String password;
+ private String sex;
+ private String city;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getSex() {
+ return sex;
+ }
+
+ public void setSex(String sex) {
+ this.sex = sex;
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setCity(String city) {
+ this.city = city;
+ }
+
+ @Override
+ public String toString() {
+ return "OrangeUser{" +
+ "username='" + username + '\'' +
+ ", password='" + password + '\'' +
+ ", sex='" + sex + '\'' +
+ ", city='" + city + '\'' +
+ '}';
+ }
+}
diff --git a/app/src/main/java/com/yemamacake/cn/entity/Product.java b/app/src/main/java/com/yemamacake/cn/entity/Product.java
new file mode 100644
index 0000000..c58b505
--- /dev/null
+++ b/app/src/main/java/com/yemamacake/cn/entity/Product.java
@@ -0,0 +1,47 @@
+package com.yemamacake.cn.entity;
+
+import java.math.BigDecimal;
+
+public class Product {
+ private Integer imageUrlId;
+ private String productName;
+ private BigDecimal productPrice;
+
+ private String productIntroduce;
+
+
+ public Product() {
+ }
+
+ public Integer getImageUrlId() {
+ return imageUrlId;
+ }
+
+ public void setImageUrlId(Integer imageUrlId) {
+ this.imageUrlId = imageUrlId;
+ }
+
+ public String getProductName() {
+ return productName;
+ }
+
+ public void setProductName(String productName) {
+ this.productName = productName;
+ }
+
+ public BigDecimal getProductPrice() {
+ return productPrice;
+ }
+
+ public void setProductPrice(BigDecimal productPrice) {
+ this.productPrice = productPrice;
+ }
+
+ public String getProductIntroduce() {
+ return productIntroduce;
+ }
+
+ public void setProductIntroduce(String productIntroduce) {
+ this.productIntroduce = productIntroduce;
+ }
+}
diff --git a/app/src/main/java/com/yemamacake/cn/fragment/SetDetailFragment.java b/app/src/main/java/com/yemamacake/cn/fragment/SetDetailFragment.java
new file mode 100644
index 0000000..937da62
--- /dev/null
+++ b/app/src/main/java/com/yemamacake/cn/fragment/SetDetailFragment.java
@@ -0,0 +1,56 @@
+package com.yemamacake.cn.fragment;
+
+
+import android.annotation.SuppressLint;
+import android.app.Fragment;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.yemamacake.cn.R;
+import com.yemamacake.cn.activity.CategoryActivity;
+
+import java.util.Objects;
+
+public class SetDetailFragment extends Fragment {
+ private View view;
+ private ImageView imageView;
+ private TextView nameText, priceText,produceText;
+
+ @SuppressLint("SetTextI18n")
+ @Nullable
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ view = inflater.inflate(R.layout.category_detail_content, container, false);
+ if (view != null) {
+ init();
+ }
+ CategoryActivity categoryActivity = (CategoryActivity) getActivity();
+ Objects.requireNonNull(categoryActivity).setOnChangeListener(product -> {
+ Log.i("sss", "onCreateView: " + product.getProductName());
+ imageView.setBackgroundResource(product.getImageUrlId());
+ nameText.setText(product.getProductName());
+ priceText.setText(product.getProductPrice().toString());
+ produceText.setText(product.getProductIntroduce());
+ });
+ return view;
+ }
+
+ /**
+ * 内容组件初始化
+ */
+ private void init() {
+ imageView = view.findViewById(R.id.category_product_image);
+ nameText = view.findViewById(R.id.category_product_name);
+ priceText = view.findViewById(R.id.category_product_price);
+ produceText= view.findViewById(R.id.category_product_introduce);
+ }
+
+}
diff --git a/app/src/main/java/com/yemamacake/cn/img.png b/app/src/main/java/com/yemamacake/cn/img.png
new file mode 100644
index 0000000000000000000000000000000000000000..d729df4319ea0cd9fa315a1987b51a6ac40876b0
GIT binary patch
literal 100991
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