From 4b6606e4915db3aa5a95aa70244b6a47fa19c048 Mon Sep 17 00:00:00 2001
From: zhaojiewen <2421668804@qq.com>
Date: Tue, 4 Apr 2023 12:43:30 +0800
Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E4=B8=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
fragment/.gitignore | 15 ++
fragment/.idea/.gitignore | 3 +
fragment/.idea/compiler.xml | 6 +
fragment/.idea/gradle.xml | 19 ++
fragment/.idea/misc.xml | 10 +
fragment/app/.gitignore | 1 +
fragment/app/build.gradle | 40 +++
fragment/app/proguard-rules.pro | 21 ++
.../fragment/ExampleInstrumentedTest.java | 26 ++
fragment/app/src/main/AndroidManifest.xml | 28 +++
.../com/example/fragment/MainActivity.java | 45 ++++
.../fragment/activity/CategoryActivity.java | 90 +++++++
.../fragment/activity/RegisterActivity.java | 145 +++++++++++
.../fragment/activity/UserActivity.java | 66 +++++
.../com/example/fragment/adapter/Adapter.java | 70 ++++++
.../adapter/fragment/SetDetailFragment.java | 53 ++++
.../example/fragment/entity/OrangeUser.java | 59 +++++
.../com/example/fragment/entity/Product.java | 34 +++
.../drawable-v24/ic_launcher_foreground.xml | 30 +++
.../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_left.png | Bin 0 -> 231 bytes
.../app/src/main/res/drawable/arrow_right.png | Bin 0 -> 233 bytes
.../src/main/res/drawable/button_login.xml | 15 ++
.../src/main/res/drawable/button_register.xml | 14 ++
.../app/src/main/res/drawable/chengzi.png | Bin 0 -> 1666 bytes
fragment/app/src/main/res/drawable/city.png | Bin 0 -> 790 bytes
.../res/drawable/ic_launcher_background.xml | 170 +++++++++++++
.../src/main/res/drawable/imformationimg.png | Bin 0 -> 170815 bytes
fragment/app/src/main/res/drawable/img.png | Bin 0 -> 363433 bytes
fragment/app/src/main/res/drawable/img2.jpg | Bin 0 -> 161041 bytes
fragment/app/src/main/res/drawable/img_1.png | Bin 0 -> 141608 bytes
fragment/app/src/main/res/drawable/juzi.png | Bin 0 -> 1898 bytes
.../app/src/main/res/drawable/loginimg.png | Bin 0 -> 796290 bytes
.../app/src/main/res/drawable/registerimg.png | Bin 0 -> 2306753 bytes
fragment/app/src/main/res/drawable/search.png | Bin 0 -> 1299 bytes
.../app/src/main/res/drawable/setting.png | Bin 0 -> 1101 bytes
fragment/app/src/main/res/drawable/sex.png | Bin 0 -> 1509 bytes
.../res/drawable/spinner_drop_down_shape.xml | 16 ++
.../src/main/res/drawable/user_account.png | Bin 0 -> 1045 bytes
.../src/main/res/drawable/user_general.png | Bin 0 -> 402 bytes
.../app/src/main/res/drawable/user_pay.png | Bin 0 -> 554 bytes
.../app/src/main/res/drawable/user_sex.png | Bin 0 -> 1123 bytes
fragment/app/src/main/res/drawable/youzi.png | Bin 0 -> 1798 bytes
.../app/src/main/res/layout/activity_main.xml | 18 ++
.../src/main/res/layout/category_detail.xml | 16 ++
.../main/res/layout/category_list_item.xml | 14 ++
.../res/layout/categoty_detail_content.xml | 31 +++
.../src/main/res/layout/content_category.xml | 53 ++++
.../app/src/main/res/layout/content_user.xml | 234 ++++++++++++++++++
.../app/src/main/res/layout/user_login.xml | 91 +++++++
.../app/src/main/res/layout/user_register.xml | 157 ++++++++++++
.../res/mipmap-anydpi-v26/ic_launcher.xml | 5 +
.../mipmap-anydpi-v26/ic_launcher_round.xml | 5 +
.../res/mipmap-anydpi-v33/ic_launcher.xml | 6 +
.../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 1404 bytes
.../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 2898 bytes
.../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 982 bytes
.../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 1772 bytes
.../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 1900 bytes
.../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 3918 bytes
.../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 2884 bytes
.../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 5914 bytes
.../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 3844 bytes
.../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 7778 bytes
.../app/src/main/res/values-night/themes.xml | 16 ++
fragment/app/src/main/res/values/colors.xml | 10 +
fragment/app/src/main/res/values/strings.xml | 3 +
fragment/app/src/main/res/values/themes.xml | 16 ++
.../app/src/main/res/xml/backup_rules.xml | 13 +
.../main/res/xml/data_extraction_rules.xml | 19 ++
.../com/example/fragment/ExampleUnitTest.java | 17 ++
fragment/build.gradle | 5 +
fragment/gradle.properties | 22 ++
fragment/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes
.../gradle/wrapper/gradle-wrapper.properties | 6 +
fragment/gradlew | 185 ++++++++++++++
fragment/gradlew.bat | 89 +++++++
fragment/settings.gradle | 21 ++
79 files changed, 2028 insertions(+)
create mode 100644 fragment/.gitignore
create mode 100644 fragment/.idea/.gitignore
create mode 100644 fragment/.idea/compiler.xml
create mode 100644 fragment/.idea/gradle.xml
create mode 100644 fragment/.idea/misc.xml
create mode 100644 fragment/app/.gitignore
create mode 100644 fragment/app/build.gradle
create mode 100644 fragment/app/proguard-rules.pro
create mode 100644 fragment/app/src/androidTest/java/com/example/fragment/ExampleInstrumentedTest.java
create mode 100644 fragment/app/src/main/AndroidManifest.xml
create mode 100644 fragment/app/src/main/java/com/example/fragment/MainActivity.java
create mode 100644 fragment/app/src/main/java/com/example/fragment/activity/CategoryActivity.java
create mode 100644 fragment/app/src/main/java/com/example/fragment/activity/RegisterActivity.java
create mode 100644 fragment/app/src/main/java/com/example/fragment/activity/UserActivity.java
create mode 100644 fragment/app/src/main/java/com/example/fragment/adapter/Adapter.java
create mode 100644 fragment/app/src/main/java/com/example/fragment/adapter/fragment/SetDetailFragment.java
create mode 100644 fragment/app/src/main/java/com/example/fragment/entity/OrangeUser.java
create mode 100644 fragment/app/src/main/java/com/example/fragment/entity/Product.java
create mode 100644 fragment/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
create mode 100644 fragment/app/src/main/res/drawable/address.png
create mode 100644 fragment/app/src/main/res/drawable/arrow_down.png
create mode 100644 fragment/app/src/main/res/drawable/arrow_left.png
create mode 100644 fragment/app/src/main/res/drawable/arrow_right.png
create mode 100644 fragment/app/src/main/res/drawable/button_login.xml
create mode 100644 fragment/app/src/main/res/drawable/button_register.xml
create mode 100644 fragment/app/src/main/res/drawable/chengzi.png
create mode 100644 fragment/app/src/main/res/drawable/city.png
create mode 100644 fragment/app/src/main/res/drawable/ic_launcher_background.xml
create mode 100644 fragment/app/src/main/res/drawable/imformationimg.png
create mode 100644 fragment/app/src/main/res/drawable/img.png
create mode 100644 fragment/app/src/main/res/drawable/img2.jpg
create mode 100644 fragment/app/src/main/res/drawable/img_1.png
create mode 100644 fragment/app/src/main/res/drawable/juzi.png
create mode 100644 fragment/app/src/main/res/drawable/loginimg.png
create mode 100644 fragment/app/src/main/res/drawable/registerimg.png
create mode 100644 fragment/app/src/main/res/drawable/search.png
create mode 100644 fragment/app/src/main/res/drawable/setting.png
create mode 100644 fragment/app/src/main/res/drawable/sex.png
create mode 100644 fragment/app/src/main/res/drawable/spinner_drop_down_shape.xml
create mode 100644 fragment/app/src/main/res/drawable/user_account.png
create mode 100644 fragment/app/src/main/res/drawable/user_general.png
create mode 100644 fragment/app/src/main/res/drawable/user_pay.png
create mode 100644 fragment/app/src/main/res/drawable/user_sex.png
create mode 100644 fragment/app/src/main/res/drawable/youzi.png
create mode 100644 fragment/app/src/main/res/layout/activity_main.xml
create mode 100644 fragment/app/src/main/res/layout/category_detail.xml
create mode 100644 fragment/app/src/main/res/layout/category_list_item.xml
create mode 100644 fragment/app/src/main/res/layout/categoty_detail_content.xml
create mode 100644 fragment/app/src/main/res/layout/content_category.xml
create mode 100644 fragment/app/src/main/res/layout/content_user.xml
create mode 100644 fragment/app/src/main/res/layout/user_login.xml
create mode 100644 fragment/app/src/main/res/layout/user_register.xml
create mode 100644 fragment/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
create mode 100644 fragment/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
create mode 100644 fragment/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml
create mode 100644 fragment/app/src/main/res/mipmap-hdpi/ic_launcher.webp
create mode 100644 fragment/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
create mode 100644 fragment/app/src/main/res/mipmap-mdpi/ic_launcher.webp
create mode 100644 fragment/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
create mode 100644 fragment/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
create mode 100644 fragment/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
create mode 100644 fragment/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
create mode 100644 fragment/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
create mode 100644 fragment/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
create mode 100644 fragment/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
create mode 100644 fragment/app/src/main/res/values-night/themes.xml
create mode 100644 fragment/app/src/main/res/values/colors.xml
create mode 100644 fragment/app/src/main/res/values/strings.xml
create mode 100644 fragment/app/src/main/res/values/themes.xml
create mode 100644 fragment/app/src/main/res/xml/backup_rules.xml
create mode 100644 fragment/app/src/main/res/xml/data_extraction_rules.xml
create mode 100644 fragment/app/src/test/java/com/example/fragment/ExampleUnitTest.java
create mode 100644 fragment/build.gradle
create mode 100644 fragment/gradle.properties
create mode 100644 fragment/gradle/wrapper/gradle-wrapper.jar
create mode 100644 fragment/gradle/wrapper/gradle-wrapper.properties
create mode 100644 fragment/gradlew
create mode 100644 fragment/gradlew.bat
create mode 100644 fragment/settings.gradle
diff --git a/fragment/.gitignore b/fragment/.gitignore
new file mode 100644
index 0000000..aa724b7
--- /dev/null
+++ b/fragment/.gitignore
@@ -0,0 +1,15 @@
+*.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
+local.properties
diff --git a/fragment/.idea/.gitignore b/fragment/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/fragment/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/fragment/.idea/compiler.xml b/fragment/.idea/compiler.xml
new file mode 100644
index 0000000..fb7f4a8
--- /dev/null
+++ b/fragment/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fragment/.idea/gradle.xml b/fragment/.idea/gradle.xml
new file mode 100644
index 0000000..a2d7c21
--- /dev/null
+++ b/fragment/.idea/gradle.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fragment/.idea/misc.xml b/fragment/.idea/misc.xml
new file mode 100644
index 0000000..bdd9278
--- /dev/null
+++ b/fragment/.idea/misc.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fragment/app/.gitignore b/fragment/app/.gitignore
new file mode 100644
index 0000000..42afabf
--- /dev/null
+++ b/fragment/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/fragment/app/build.gradle b/fragment/app/build.gradle
new file mode 100644
index 0000000..5fe47a4
--- /dev/null
+++ b/fragment/app/build.gradle
@@ -0,0 +1,40 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ namespace 'com.example.fragment'
+ compileSdk 33
+
+ defaultConfig {
+ applicationId "com.example.fragment"
+ minSdk 24
+ targetSdk 33
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+
+ implementation 'androidx.appcompat:appcompat:1.4.1'
+ implementation 'com.google.android.material:material:1.5.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
+ testImplementation 'junit:junit:4.13.2'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.3'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
+ implementation 'liji.library.dev:citypickerview:1.1.0'
+}
\ No newline at end of file
diff --git a/fragment/app/proguard-rules.pro b/fragment/app/proguard-rules.pro
new file mode 100644
index 0000000..481bb43
--- /dev/null
+++ b/fragment/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
\ No newline at end of file
diff --git a/fragment/app/src/androidTest/java/com/example/fragment/ExampleInstrumentedTest.java b/fragment/app/src/androidTest/java/com/example/fragment/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..a2e9516
--- /dev/null
+++ b/fragment/app/src/androidTest/java/com/example/fragment/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.fragment;
+
+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.example.fragment", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/fragment/app/src/main/AndroidManifest.xml b/fragment/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..093e579
--- /dev/null
+++ b/fragment/app/src/main/AndroidManifest.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fragment/app/src/main/java/com/example/fragment/MainActivity.java b/fragment/app/src/main/java/com/example/fragment/MainActivity.java
new file mode 100644
index 0000000..d57f406
--- /dev/null
+++ b/fragment/app/src/main/java/com/example/fragment/MainActivity.java
@@ -0,0 +1,45 @@
+package com.example.fragment;
+
+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.example.fragment.activity.RegisterActivity;
+
+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/fragment/app/src/main/java/com/example/fragment/activity/CategoryActivity.java b/fragment/app/src/main/java/com/example/fragment/activity/CategoryActivity.java
new file mode 100644
index 0000000..02eb1ab
--- /dev/null
+++ b/fragment/app/src/main/java/com/example/fragment/activity/CategoryActivity.java
@@ -0,0 +1,90 @@
+package com.example.fragment.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.example.fragment.R;
+import com.example.fragment.adapter.Adapter;
+import com.example.fragment.entity.Product;
+import com.example.fragment.adapter.fragment.SetDetailFragment;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+
+public class CategoryActivity extends Activity {
+ public OnChangeListener onchangedListener;
+ private List productList;
+ private List productCategory = new ArrayList<>();
+ private ListView titleList;
+ private Adapter adapter;
+
+ @Override
+ public 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));
+ }
+ });
+
+ }
+
+ public void setOnChangeListener(OnChangeListener onChangeListener) {
+ this.onchangedListener = onChangeListener;
+ }
+
+ public interface OnChangeListener {
+ void changeText(Product product);
+ }
+
+ /**
+ * 初始化数据
+ */
+ private void initData() {
+ productList = new ArrayList<>();
+ productCategory.add("衣服1");
+ productCategory.add("衣服2");
+ productCategory.add("衣服3");
+ Product product = new Product();
+ product.setImageUrlId(R.drawable.img);
+ product.setProductName("衣服1");
+ product.setProductPrice(new BigDecimal("99"));
+ Product product1 = new Product();
+ product1.setImageUrlId(R.drawable.img2);
+ product1.setProductName("衣服2");
+ product1.setProductPrice(new BigDecimal("199"));
+ Product product2 = new Product();
+ product2.setImageUrlId(R.drawable.img_1);
+ product2.setProductName("衣服3");
+ product2.setProductPrice(new BigDecimal("299"));
+ productList.add(product);
+ productList.add(product1);
+ productList.add(product2);
+ }
+
+ /**
+ * 初始化组件
+ */
+ private void init() {
+ titleList = findViewById(R.id.category_title_list);
+ adapter = new Adapter(productCategory, CategoryActivity.this);
+ titleList.setAdapter(adapter);
+ }
+}
\ No newline at end of file
diff --git a/fragment/app/src/main/java/com/example/fragment/activity/RegisterActivity.java b/fragment/app/src/main/java/com/example/fragment/activity/RegisterActivity.java
new file mode 100644
index 0000000..0097bc9
--- /dev/null
+++ b/fragment/app/src/main/java/com/example/fragment/activity/RegisterActivity.java
@@ -0,0 +1,145 @@
+package com.example.fragment.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.example.fragment.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/fragment/app/src/main/java/com/example/fragment/activity/UserActivity.java b/fragment/app/src/main/java/com/example/fragment/activity/UserActivity.java
new file mode 100644
index 0000000..cef28b8
--- /dev/null
+++ b/fragment/app/src/main/java/com/example/fragment/activity/UserActivity.java
@@ -0,0 +1,66 @@
+package com.example.fragment.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.example.fragment.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;
+ }
+ }
+}
diff --git a/fragment/app/src/main/java/com/example/fragment/adapter/Adapter.java b/fragment/app/src/main/java/com/example/fragment/adapter/Adapter.java
new file mode 100644
index 0000000..e947600
--- /dev/null
+++ b/fragment/app/src/main/java/com/example/fragment/adapter/Adapter.java
@@ -0,0 +1,70 @@
+package com.example.fragment.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.example.fragment.R;
+
+import java.util.List;
+
+public class Adapter extends BaseAdapter {
+ private List productCategory;
+ private LayoutInflater layoutInflater;
+ private int selectionPosition = -1;
+
+ public Adapter(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.YELLOW);
+ } else {
+ viewHolder.tv.setBackgroundColor(Color.WHITE);
+ }
+ return convertView;
+ }
+
+ public void setSelectedPosition(int position) {
+ this.selectionPosition = position;
+ }
+
+ class ViewHolder {
+ TextView tv;
+ }
+}
diff --git a/fragment/app/src/main/java/com/example/fragment/adapter/fragment/SetDetailFragment.java b/fragment/app/src/main/java/com/example/fragment/adapter/fragment/SetDetailFragment.java
new file mode 100644
index 0000000..7f3aeea
--- /dev/null
+++ b/fragment/app/src/main/java/com/example/fragment/adapter/fragment/SetDetailFragment.java
@@ -0,0 +1,53 @@
+package com.example.fragment.adapter.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.example.fragment.R;
+import com.example.fragment.activity.CategoryActivity;
+
+import java.util.Objects;
+
+public class SetDetailFragment extends Fragment {
+ private View view;
+ private ImageView imageView;
+ private TextView nameText, priceText;
+
+ @SuppressLint("SetTextI18n")
+ @Nullable
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ view = inflater.inflate(R.layout.categoty_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());
+ });
+ 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);
+ }
+
+}
diff --git a/fragment/app/src/main/java/com/example/fragment/entity/OrangeUser.java b/fragment/app/src/main/java/com/example/fragment/entity/OrangeUser.java
new file mode 100644
index 0000000..3650d34
--- /dev/null
+++ b/fragment/app/src/main/java/com/example/fragment/entity/OrangeUser.java
@@ -0,0 +1,59 @@
+package com.example.fragment.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/fragment/app/src/main/java/com/example/fragment/entity/Product.java b/fragment/app/src/main/java/com/example/fragment/entity/Product.java
new file mode 100644
index 0000000..4a10b42
--- /dev/null
+++ b/fragment/app/src/main/java/com/example/fragment/entity/Product.java
@@ -0,0 +1,34 @@
+package com.example.fragment.entity;
+
+import java.math.BigDecimal;
+
+public class Product {
+
+ 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 Integer getImageUrlId() {
+ return imageUrlId;
+ }
+
+ public void setImageUrlId(Integer imageUrlId) {
+ this.imageUrlId = imageUrlId;
+ }
+
+ private Integer imageUrlId;
+ private String productName;
+ private BigDecimal productPrice;
+}
diff --git a/fragment/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/fragment/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000..2b068d1
--- /dev/null
+++ b/fragment/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fragment/app/src/main/res/drawable/address.png b/fragment/app/src/main/res/drawable/address.png
new file mode 100644
index 0000000000000000000000000000000000000000..7318be016a0fea789da57d99dcecd6485834d90d
GIT binary patch
literal 1028
zcmV+f1pE7mP)5000BaNklDk%Y
z^L1WPEtqb%ySve7d?6yolv15K!uE{TxjPY%sF{WvH
z!8)_=MtOV2+5Z`4zRuVE#u(eYwu!B~+Ih6Z%+n?3e~qGOr*AxXVHOt`uU=VM`9VYu
zDWyIrNiZcM+lc6#?yu{Y^-*=#E{
zy?(!c?5x`B%yss*@F3cSOJ_lgk^>1IP5;w+J-?8Snmzlq+I$sOMy`3W#rtp<2
z;i5bihM8ZiI&b%D!#JRi0bHt6E?1sS%zSqpkYE_C^>!k%^K
z@3t(*3%)0>owB>TQ=PG7?
zuqx@uDiJgsLb>I_RlT0dM%bgI}Qev%zXd`wC!WDw3Z(t{u
zHYvQ~Rufr4Id#3=)9Wtv{9ls)|3|=>j~Fu#CK<@gvs&xN|9blFp)qC^0QO>xZLRg)
zs8D0fD*$W}(eY;}#+Xe2umI2|qHa?tGe0LuvLU6sC^cVFX6BX<;s5})iRgS7)Hyfp
zy?;Q&bt&cT$Lx>VWLY+kh^In`j#BEZ3TmyL3n5$qK#Pd(2WKjKnCJOSQ52VmxFe-J
z85CG+7efd~h`21JeENRjuf=xGO?mHcVvJU6eOL;uwQC`S-CnP^kf!NN)$40F#Tau9
z0Q*9SevGk0L`%cGtp%21X6_;)Dy3HH(r*N;gVcsH3ZQW)e}zuqm)`)Eo@f>Q6}kKX
O0000pWc?Ln7SYUUTGXFyL{y_+-L2
zAe`!S*CTxHOaYa5+UMsh6?*@xD4H)SFgHMSO;ZNrmzui=x3C_U*gmtg{5?mI(WBPg
zVrvvVtUff)J{GxgZrBp0n>&66nk-;)XI@nxvOtKP`KkqnM58sE+rxj{bK=E91%L6o
zDJUkmcuK5r3u^FE;a%Yr)X1eGyTkEWRK)$GCSOn0@3MV=&eJW%A&v1%tmz}I4l#%G
d*JWL}?QZm^Xy&~w{S0(DgQu&X%Q~loCIB
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fragment/app/src/main/res/drawable/button_register.xml b/fragment/app/src/main/res/drawable/button_register.xml
new file mode 100644
index 0000000..3eb0673
--- /dev/null
+++ b/fragment/app/src/main/res/drawable/button_register.xml
@@ -0,0 +1,14 @@
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fragment/app/src/main/res/drawable/chengzi.png b/fragment/app/src/main/res/drawable/chengzi.png
new file mode 100644
index 0000000000000000000000000000000000000000..fff03064b0057c455eb8cf7525fb18cbeb3d9d59
GIT binary patch
literal 1666
zcmV-|27UR7P)D=Q?yt`
zgL^K3ZRLf*#XIUe*_u;i3GU4nB(iit*~G{uLY8F8Cde!TWiv1f0xzV~%pfC%v5I>4
zYfR8L76!Ll8P$qI?uQ`go$|uKOe^@|z{E7N>sayVo@;u&0$RPHFmT3-a7BaXGZ43x
z7X&w1!4EYirV&G=vcdB(gO`^V23K1Vtqi!QuoEXhSX5pRJZmLpC^2!3L`tl|y`KmN
zUoHq9up+v>-cv@zPnH)3=Uc%KCC1c9WrJr9gKM}Ci#B?K;Y7lHyVQjrOrKJH&y~)W
zd6zpoNyw?pWXzjP0xp2KotfGp(XJ`&ggCI&P9OW2CNU933|%JgK`kYstmSb8MUWJG(Na
zG~}}qYsrXSU6r0e9R-L<+h-(rN4d-CTW#h
zu)LqjT93xV$2G#fnKv_ON11t+Rk7j4af_zOm6_|$owoHH(fzrvgZZuDP0k*>u{1l%
zTGm=N!n>!tq^=vcahyG=;YUj;3t~MqW0scgQ;j9BbokSQywA|nn%w!pSU4BptSUAbt?#IdFQq}5>jG|v)|Tbpb?+C
z55UuQNz;U{QM{pNW8M+Xrye3;ahejdB}>EsQQA@zue5#v;ci=uX#yLs$-*1@cl#7w
zTAcuHNmFiiWjhsbXiV%o;!}+tZ^E}fyNY)3RC3}c5<-{z7P`U;@
z7&-aTJTq?d$?jA404PZ|IXiKpvArg&Rk9k575C*0@DEfU}X
zFD)rCWh}kRYc8RuOP8OoSYW0pLB-Kc@0hQ;(&zeuL90??z@~`hS6zd*uPP^B2+?R$
zBPDQK%?BeRt=hGhh}NVeJBuQ=+d+{ht3P+P1lNIKzng9`F`ciiy5X_+$c
znAtHy!X~!vSG{0V+Zw&023t5@NNB{!Nv~2jBSl-6=rM@iio_cuOGYAd#+T!k5P_i{
zY%@M9#|by$EgOlLiL{GoA3y_oN<(jsTLkknX2%H8nzoD>!96?gnx!aW!*DIl#uBUR
za!0)5ga2GwgSIkNIr)kp?@;XkQgS?PRyvwrEhdR#5Q+ih*etVFFlt$#Ho7TolgIk0
zt`%b5oqMm=#}5jD$wWLEOp_UyV#N0U7Y-@W?r_rA{ac<^_{}hX0R}#BQQ@)#!~g&Q
M07*qoM6N<$f;J}@jQ{`u
literal 0
HcmV?d00001
diff --git a/fragment/app/src/main/res/drawable/city.png b/fragment/app/src/main/res/drawable/city.png
new file mode 100644
index 0000000000000000000000000000000000000000..790fb2bf39c33588894e33135a78fc1c05ed6caf
GIT binary patch
literal 790
zcmV+x1L^#UP)&Rd)Azkx1s<6Vd&j0As9)Z*~+qJ9V@fa4!+P{tX}Cn;o^A
z0#97z2mE6~ArY9|$W0q=J1aL74vbT;Z%FVmj;V60)XN)l{^KlBNLW;uIF({2YuBE2
zcC5=9TWbna9I^Z8o0G7cl2!yYdy`1SwG$;-psw+IfN$Dm9
zVUm|{P*tj+F;%2fy_G)hks&M$df^`vz-0I;1liSc%k
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fragment/app/src/main/res/drawable/imformationimg.png b/fragment/app/src/main/res/drawable/imformationimg.png
new file mode 100644
index 0000000000000000000000000000000000000000..b2c27f6a29c4a87d45189ef4c4b9fae1d9a57e8a
GIT binary patch
literal 170815
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