diff --git a/orange_android/.gitignore b/orange_android/.gitignore
new file mode 100644
index 0000000..aa724b7
--- /dev/null
+++ b/orange_android/.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/orange_android/.idea/.gitignore b/orange_android/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/orange_android/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/orange_android/.idea/compiler.xml b/orange_android/.idea/compiler.xml
new file mode 100644
index 0000000..fb7f4a8
--- /dev/null
+++ b/orange_android/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/orange_android/.idea/gradle.xml b/orange_android/.idea/gradle.xml
new file mode 100644
index 0000000..3f3f247
--- /dev/null
+++ b/orange_android/.idea/gradle.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/orange_android/.idea/misc.xml b/orange_android/.idea/misc.xml
new file mode 100644
index 0000000..2a4d5b5
--- /dev/null
+++ b/orange_android/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/orange_android/app/.gitignore b/orange_android/app/.gitignore
new file mode 100644
index 0000000..42afabf
--- /dev/null
+++ b/orange_android/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/orange_android/app/build.gradle b/orange_android/app/build.gradle
new file mode 100644
index 0000000..68674b4
--- /dev/null
+++ b/orange_android/app/build.gradle
@@ -0,0 +1,43 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ namespace 'com.example.test'
+ compileSdk 33
+
+ defaultConfig {
+ applicationId "com.example.test"
+ minSdk 27
+ 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'
+ debuggable true
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+
+ implementation 'androidx.appcompat:appcompat:1.4.1'
+ implementation group: 'com.alibaba', name: 'fastjson', version: '1.2.12'
+ implementation "com.squareup.okhttp3:okhttp:4.2.2"
+ 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 'com.github.crazyandcoder:citypicker:6.0.2'
+}
\ No newline at end of file
diff --git a/orange_android/app/proguard-rules.pro b/orange_android/app/proguard-rules.pro
new file mode 100644
index 0000000..481bb43
--- /dev/null
+++ b/orange_android/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/orange_android/app/src/androidTest/java/com/example/test/ExampleInstrumentedTest.java b/orange_android/app/src/androidTest/java/com/example/test/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..6ea62a5
--- /dev/null
+++ b/orange_android/app/src/androidTest/java/com/example/test/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.test;
+
+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.test", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/orange_android/app/src/main/AndroidManifest.xml b/orange_android/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..66963f5
--- /dev/null
+++ b/orange_android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/orange_android/app/src/main/java/com/example/test/MainActivity.java b/orange_android/app/src/main/java/com/example/test/MainActivity.java
new file mode 100644
index 0000000..1babbe2
--- /dev/null
+++ b/orange_android/app/src/main/java/com/example/test/MainActivity.java
@@ -0,0 +1,123 @@
+package com.example.test;
+
+
+import android.content.Intent;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.os.Bundle;
+import android.os.Looper;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Toast;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.example.test.activity.homeActivity;
+import com.example.test.activity.registerActivity;
+import com.example.test.dao.UserDatabase;
+import com.example.test.entity.user;
+import com.example.test.netrequest.userOkHttp;
+
+import java.io.IOException;
+
+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.login);
+ init();
+ }
+
+
+ @Override
+ public void onClick(View view) {
+ switch (view.getId()){
+ case R.id.register:
+ Intent intent = new Intent(this, registerActivity.class);
+ startActivity(intent);
+ break;
+ case R.id.login:
+// loginCheck();
+ Thread thread = new Thread(runnable);
+ thread.start();
+
+
+
+ }
+ }
+
+ private void loginCheck() {
+ String name = usernameText.getText().toString();
+ String pass = paswdEdit.getText().toString();
+ if(name.isEmpty()||pass.isEmpty()){
+ Toast.makeText(this,"用户名或密码为空",Toast.LENGTH_SHORT).show();
+ return;
+ }
+
+ UserDatabase db = new UserDatabase(this, "orange");
+ SQLiteDatabase readdb = db.getReadableDatabase();
+ Cursor cursor = db.select(readdb, "user",null,"username=? and password=?",new String[]{name,pass},null,null,null);
+
+ if(cursor.getCount()!=0){
+ cursor.moveToNext();
+ Intent intent = new Intent(this, homeActivity.class);
+ Bundle bundle = new Bundle();
+ bundle.putString("username",cursor.getString(1));
+ bundle.putString("sex",cursor.getString(3));
+ bundle.putString("address",cursor.getString(4));
+ cursor.close();
+ readdb.close();
+ intent.putExtras(bundle);
+ startActivity(intent);
+ }else {
+ Toast.makeText(this,"用户名或密码有误",Toast.LENGTH_SHORT).show();
+ }
+
+ }
+
+ public void init(){
+ registerButton = findViewById(R.id.register);
+ registerButton.setOnClickListener(this);
+ loginButton = findViewById(R.id.login);
+ loginButton.setOnClickListener(this);
+ usernameText = findViewById(R.id.username);
+ paswdEdit = findViewById(R.id.password);
+ }
+
+
+ Runnable runnable = new Runnable() {
+ @Override
+ public void run() {
+ String name = usernameText.getText().toString();
+ String pass = paswdEdit.getText().toString();
+ userOkHttp userOkHttp = new userOkHttp();
+ user u = new user();
+ u.setUsername(name);
+ u.setPassword(pass);
+ try {
+ user result = userOkHttp.login(u);
+ if(result!=null){
+ Intent intent = new Intent(MainActivity.this, homeActivity.class);
+ Bundle bundle = new Bundle();
+ bundle.putString("username",result.getUsername());
+ bundle.putString("password",result.getPassword());
+ bundle.putString("sex",result.getSex());
+ bundle.putString("city",result.getCity());
+ intent.putExtras(bundle);
+ startActivity(intent);
+ }else{
+ Looper.prepare();
+ Toast.makeText(MainActivity.this,"用户名或密码错误",Toast.LENGTH_SHORT).show();
+ Looper.loop();
+ }
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+
+ }
+ };
+}
diff --git a/orange_android/app/src/main/java/com/example/test/activity/fruitActivity.java b/orange_android/app/src/main/java/com/example/test/activity/fruitActivity.java
new file mode 100644
index 0000000..f6df4c9
--- /dev/null
+++ b/orange_android/app/src/main/java/com/example/test/activity/fruitActivity.java
@@ -0,0 +1,103 @@
+package com.example.test.activity;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.os.Bundle;
+import com.example.test.R;
+import com.example.test.entity.fruitContent;
+import com.example.test.entity.fruitKind;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class fruitActivity extends AppCompatActivity {
+ private String kinds[] = {"超值必抢","鲜果上新","店家推荐","柑桔橙柚","蜜瓜/西瓜","葡萄/提子","热带水果","梨/苹果","超值必抢","鲜果上新","店家推荐","柑桔橙柚","蜜瓜/西瓜","葡萄/提子","热带水果","梨/苹果","超值必抢","鲜果上新","店家推荐","柑桔橙柚","蜜瓜/西瓜","超值必抢","鲜果上新","店家推荐","柑桔橙柚","蜜瓜/西瓜"};
+ private int imgs[] ={R.drawable.hot,R.drawable.fresh,R.drawable.recomend};
+ private int fruitImgs[][] = {{R.drawable.grapefruit,R.drawable.hamimelon,R.drawable.watermelon},
+ {R.drawable.grapefruit1,R.drawable.leechee,R.drawable.carambola},
+ {R.drawable.pineapple,R.drawable.pear,R.drawable.apple},
+ {R.drawable.orange1,R.drawable.grapefruit,R.drawable.grapefruit1,R.drawable.grapefruit2},
+ {R.drawable.watermelon,R.drawable.watermelon1,R.drawable.hamimelon,R.drawable.hamimelon1},
+ {R.drawable.grape,R.drawable.greengrape, R.drawable.grape1},
+ {R.drawable.coconut,R.drawable.banana,R.drawable.pineapple,R.drawable.carambola,R.drawable.leechee},
+ {R.drawable.apple,R.drawable.pear,R.drawable.pear1,R.drawable.apple1}};
+
+ private String fruitNames[][] = {{"红心西柚 泡水榨汁茶饮佳选","冰淇淋网纹蜜瓜 一口软糯香甜","海南麒麟瓜,粒约3KG~4KG"},
+ {"广西正宗容县沙田柚子新鲜水果白","妃子笑荔枝","福州漳州甜杨桃!只卖书上熟果"},
+ {"菲律宾凤梨1粒装1KG","正宗烟台红富士苹果|24小时速发","陕西贡梨400g"},
+ {"江西赣南精选血橙4粒装720g","红心西柚 泡水榨汁茶饮佳选","广西正宗容县沙田柚子新鲜水果白","红心蜜柚10斤新鲜水果应季大红肉柚子"},
+ {"海南麒麟瓜,粒约3KG~4KG","现摘冰糖麒麟大西瓜","冰淇淋网纹蜜瓜 一口软糯香甜","新疆哈密瓜脆甜多汁保熟包甜"},
+ {"云南夏黑葡萄新鲜采摘无籽葡萄","阳光玫瑰葡萄新鲜水果!现摘!","云南下黑葡萄顺丰冷链新鲜直达"},
+ {"泰国椰青700g","广西芭蕉酸牛蕉牛角蕉新鲜香蕉","菲律宾凤梨1粒装1KG","福州漳州甜杨桃!只卖书上熟果","妃子笑荔枝"},
+ {"正宗烟台红富士苹果|24小时速发","陕西贡梨400g","红香酥梨新鲜水果当季整箱","冰糖心苹果 精选好果 脆甜多汁!"}};
+ private String fruitDescs[][] = {{"皮薄肉厚汁多颗粒饱满","香甜软糯,水分很足","香甜可口,丰富多汁"},
+ {"个大纯天然,价廉物美","荔枝特别棒,肉厚核小","果子新鲜果肉纤维细腻"},
+ {"果子新鲜果肉纤维细腻","栖霞苹果|中国大陆|红富士","鲜甜可口,汁多美味"},
+ {"酸甜可口,一口爆汁","皮薄肉厚汁多颗粒饱满","个大纯天然,价廉物美","核小肉厚,水分足"},
+ {"香甜可口,丰富多汁","水分足足的,皮薄薄的","香甜软糯,水分很足","往嘴里咬一口满嘴留香"},
+ {"中国大陆|食用农产品|黑夏","中国大陆|散装","中国大陆|包装|黑夏"},
+ {"新鲜可口 汁多味美","甜度浓郁","香水菠萝","果子新鲜果肉纤维细腻","荔枝特别棒,肉厚核小"},
+ {"栖霞苹果|中国大陆|红富士","鲜甜可口,汁多美味","清香爽口甜,果汁充足","烟台苹果|中国大陆|一级"}};
+
+ private double fruitPrices[][] = {{16.8,15.3,21.8},
+ {15.7,22.4,5.8},
+ {10.8,15.3,20.4},
+ {24.9,11.5,16.7,13.8},
+ {21.7,24.6,21.8,25.9},
+ {21.9,15.3,17.6},
+ {15.7,10.6,12.9,10.5,20.6},
+ {24.9,21.2,19.9,24.6}};
+
+ private int fruitTag[][]={{0,1,0},
+ {1,0,0},
+ {0,0,0},
+ {1,0,0,1},
+ {1,0,1,0},
+ {0,0,1},
+ {1,1,0,0,0},
+ {0,0,1,1}};
+ private List fruitContents = new ArrayList<>();
+
+ public List getFruitContents() {
+
+ return fruitContents;
+ }
+
+ List fruitKinds=new ArrayList<>();
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ initFruitContents();
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_fruit_fragment);
+
+ }
+
+ protected void initFruitContents() {
+ for (int i = 0; i < fruitImgs.length; i++) {
+ int len = fruitImgs[i].length;
+ fruitContent arr[] = new fruitContent[len];
+ for (int j = 0; j < arr.length; j++) {
+ fruitContent f = new fruitContent(fruitImgs[i][j],fruitNames[i][j],fruitDescs[i][j],fruitTag[i][j],fruitPrices[i][j]);
+ arr[j]=f;
+ }
+ fruitContents.add(arr);
+ }
+
+ }
+
+
+
+ public List getfuritKinds() {
+ fruitKind f;
+ for (int i = 0; i < kinds.length; i++) {
+ if(i<3){
+ f = new fruitKind(kinds[i], imgs[i]);
+ }
+ else {
+ f = new fruitKind(kinds[i], 0);
+ }
+ fruitKinds.add(f);
+ }
+ return fruitKinds;
+ }
+}
\ No newline at end of file
diff --git a/orange_android/app/src/main/java/com/example/test/activity/homeActivity.java b/orange_android/app/src/main/java/com/example/test/activity/homeActivity.java
new file mode 100644
index 0000000..8a041f4
--- /dev/null
+++ b/orange_android/app/src/main/java/com/example/test/activity/homeActivity.java
@@ -0,0 +1,142 @@
+package com.example.test.activity;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentTransaction;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.GridView;
+
+import com.example.test.R;
+import com.example.test.adapter.homeNavigationBottomAdapter;
+import com.example.test.fragment.navigationCartFragment;
+import com.example.test.fragment.navigationGoodFragment;
+import com.example.test.fragment.navigationHomeFragment;
+import com.example.test.fragment.navigationPersonFragment;
+import com.example.test.service.MessageService;
+
+public class homeActivity extends AppCompatActivity {
+ public final int Home = 1;
+ public final int Good = 2;
+ public final int Cart = 3;
+ public final int Person = 4;
+ private int imgs[]={R.drawable.home_kind_orange1,R.drawable.home_kind_grapefruit,
+ R.drawable.home_kind_orange,R.drawable.home_kind_watermelon,
+ R.drawable.home_kind_pear,R.drawable.home_kind_apple,
+ R.drawable.home_kind_lemon,R.drawable.home_kind_mango
+ };
+
+ private String names[] = {"橙子","柚子","橘子","西瓜","香梨","苹果","柠檬","芒果"};
+
+ private double prices[] = {9.9,29.3,19.7,5.7,6.7,10.9,15.9,29.9};
+
+ private int sectionImgs[] = {R.drawable.section_home,R.drawable.section_good,
+ R.drawable.section_cart,R.drawable.section_mine};
+ private String sectionNames[] ={"首页","商品","购物车","我"};
+
+ private FragmentManager manager = getSupportFragmentManager();
+ private Bundle extras;
+ private Handler handler = new Handler(new Handler.Callback() {
+ @Override
+ public boolean handleMessage(@NonNull Message message) {
+ switch (message.what){
+ case Home:
+ navigationHomeFragment homeFragment = (navigationHomeFragment) manager.findFragmentById(R.id.navigation_section);
+ homeFragment.init();
+ return true;
+ case Good:
+ navigationGoodFragment goodFragment = (navigationGoodFragment) manager.findFragmentById(R.id.navigation_section);
+ goodFragment.initView();
+ return true;
+ }
+ return false;
+ }
+ });
+
+ public Handler getHandler() {
+ return handler;
+ }
+
+ public int[] getImgs() {
+ return imgs;
+ }
+
+ public String[] getNames() {
+ return names;
+ }
+
+ public double[] getPrices() {
+ return prices;
+ }
+
+ public int[] getSectionImgs() {
+ return sectionImgs;
+ }
+
+ public String[] getSectionNames() {
+ return sectionNames;
+ }
+
+ public Bundle getBundle(){
+ return extras;
+ }
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.navigation);
+ Intent service = new Intent(homeActivity.this, MessageService.class);
+ startService(service);
+ Log.i("start service","start");
+ Intent intent = getIntent();
+ extras = intent.getExtras();
+ init();
+ initFragment(new navigationHomeFragment());
+
+ }
+
+ public void initFragment(Fragment fragment){
+ FragmentTransaction transaction = manager.beginTransaction();
+ transaction.replace(R.id.navigation_section,fragment);
+ transaction.commit();
+ }
+
+ protected void init(){
+
+ //初始化底端导航栏
+ GridView navigation = (GridView)findViewById(R.id.home_navigation_bottom_gridview);
+ homeNavigationBottomAdapter navigationAdapter = new homeNavigationBottomAdapter(sectionImgs,sectionNames,this);
+ navigation.setAdapter(navigationAdapter);
+ navigation.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView> parent, View view, int position, long id) {
+ switch (position){
+ case 0:
+ initFragment(new navigationHomeFragment());
+ break;
+ case 1:
+ initFragment(new navigationGoodFragment());
+
+ break;
+ case 2:
+ initFragment(new navigationCartFragment());
+
+ break;
+ case 3:
+ initFragment(new navigationPersonFragment());
+ break;
+ }
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/orange_android/app/src/main/java/com/example/test/activity/registerActivity.java b/orange_android/app/src/main/java/com/example/test/activity/registerActivity.java
new file mode 100644
index 0000000..6d328ed
--- /dev/null
+++ b/orange_android/app/src/main/java/com/example/test/activity/registerActivity.java
@@ -0,0 +1,209 @@
+package com.example.test.activity;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.content.ContentValues;
+import android.content.Intent;
+import android.database.sqlite.SQLiteDatabase;
+import android.os.Bundle;
+import android.os.Looper;
+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 com.example.test.MainActivity;
+import com.example.test.R;
+import com.example.test.dao.UserDatabase;
+import com.example.test.entity.user;
+import com.example.test.netrequest.userOkHttp;
+import com.lljjcoder.Interface.OnCityItemClickListener;
+import com.lljjcoder.bean.CityBean;
+import com.lljjcoder.bean.DistrictBean;
+import com.lljjcoder.bean.ProvinceBean;
+import com.lljjcoder.citywheel.CityConfig;
+import com.lljjcoder.style.citypickerview.CityPickerView;
+
+import java.io.IOException;
+
+public class registerActivity extends AppCompatActivity implements View.OnClickListener, RadioGroup.OnCheckedChangeListener {
+ private EditText userEdit;
+ private EditText passEdit;
+ private EditText paEdit;
+ private RadioGroup sexBut;
+ private TextView adressText;
+ private String sex ="男";
+ private Button regBut;
+ CityPickerView citypv;
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.register);
+ init();
+ }
+
+ public void init(){
+ citypv = new CityPickerView();
+ citypv.init(this);
+ initConfig();
+ citypv.setOnCityItemClickListener(new OnCityItemClickListener() {
+ @Override
+ public void onSelected(ProvinceBean province, CityBean city, DistrictBean district) {
+ String pro = province.getName();
+ String ci = city.getName();
+ String dis = district.getName();
+ adressText.setText(String.format("%s %s %s",pro,ci,dis));
+ }
+
+ @Override
+ public void onCancel() {
+ }
+ });
+ userEdit = findViewById(R.id.reg_username);
+ passEdit = findViewById(R.id.reg_password);
+ paEdit = findViewById(R.id.reg_apassword);
+ adressText = findViewById(R.id.reg_adress);
+ adressText.setOnClickListener(this);
+ sexBut = findViewById(R.id.reg_sex);
+ sexBut.setOnCheckedChangeListener(this);
+ regBut = findViewById(R.id.reg_register);
+ regBut.setOnClickListener(this);
+ }
+
+ private void initConfig() {
+ CityConfig cityConfig = new CityConfig.Builder()
+ .title("选择城市")//标题
+ .titleTextSize(18)//标题文字大小
+ .titleTextColor("#585858")//标题文字颜 色
+ .titleBackgroundColor("#E9E9E9")//标题栏背景色
+ .confirTextColor("#585858")//确认按钮文字颜色
+ .confirmText("ok")//确认按钮文字
+ .confirmTextSize(16)//确认按钮文字大小
+ .cancelTextColor("#585858")//取消按钮文字颜色
+ .cancelText("cancel")//取消按钮文字
+ .cancelTextSize(16)//取消按钮文字大小
+ .setCityWheelType(CityConfig.WheelType.PRO_CITY_DIS)//显示类,只显示省份一级,显示省市两级还是显示省市区三级
+ .showBackground(true)//是否显示半透明背景
+ .visibleItemsCount(7)//显示item的数量
+ .province("浙江省")//默认显示的省份
+ .city("杭州市")//默认显示省份下面的城市
+ .district("滨江区")//默认显示省市下面的区县数据
+ .provinceCyclic(true)//省份滚轮是否可以循环滚动
+ .cityCyclic(true)//城市滚轮是否可以循环滚动
+ .districtCyclic(true)//区县滚轮是否循环滚动
+ .drawShadows(false)//滚轮不显示模糊效果
+ .setLineColor("#03a9f4")//中间横线的颜色
+ .setLineHeigh(5)//中间横线的高度
+ .setShowGAT(true)//是否显示港澳台数据,默认不显示
+ .build();
+ citypv.setConfig(cityConfig);
+ }
+
+
+
+
+ @Override
+ public void onClick(View view) {
+ switch (view.getId()){
+ case R.id.reg_adress:
+ citypv.showCityPicker();
+ break;
+ case R.id.reg_register:
+ Thread thread = new Thread(runnable);
+ thread.start();
+ break;
+ }
+ }
+
+
+ //利用sqlite数据库验证用户名和密码
+ private void check() {
+ Intent intent = new Intent(this, MainActivity.class);
+ String username = userEdit.getText().toString();
+ String password = passEdit.getText().toString();
+ String apassword = paEdit.getText().toString();
+ String adress = adressText.getText().toString();
+ if(password.equals(apassword)){
+ if(username.isEmpty()||username.isEmpty()){
+ Toast.makeText(this,"用户名或密码为空",Toast.LENGTH_SHORT).show();
+ }else {
+ if(adress.equals("")||adress.equals("地址选择"))
+ Toast.makeText(this,"未选择地址",Toast.LENGTH_SHORT).show();
+ else{
+ UserDatabase db = new UserDatabase(this, "orange");
+ SQLiteDatabase writedb = db.getWritableDatabase();
+ ContentValues values = new ContentValues();
+ values.put("username",username);
+ values.put("password",password);
+ values.put("adress",adress);
+ values.put("sex",sex);
+ db.insert(writedb,"user",values);
+ writedb.close();
+ startActivity(intent);
+ }
+ }
+ }
+ else {
+ Toast.makeText(this,"两次密码不一致",Toast.LENGTH_SHORT).show();
+ }
+ }
+
+
+ @Override
+ public void onCheckedChanged(RadioGroup group, int checkedId) {
+ //根据用户选择来改变sex的值
+ sex = R.id.reg_male==checkedId?"男":"女";
+ }
+
+
+ Runnable runnable = new Runnable() {
+ @Override
+ public void run() {
+ Intent intent = new Intent(registerActivity.this, MainActivity.class);
+ String username = userEdit.getText().toString();
+ String password = passEdit.getText().toString();
+ String apassword = paEdit.getText().toString();
+ String adress = adressText.getText().toString();
+ if(password.equals(apassword)){
+ if(username.isEmpty()||username.isEmpty()){
+ Looper.prepare();
+ Toast.makeText(registerActivity.this,"用户名或密码为空",Toast.LENGTH_SHORT).show();
+ Looper.loop();
+ }else {
+ if(adress.equals("")||adress.equals("地址选择")) {
+ Looper.prepare();
+ Toast.makeText(registerActivity.this, "未选择地址", Toast.LENGTH_SHORT).show();
+ Looper.loop();
+ }
+ else{
+ user u = new user();
+ u.setUsername(username);
+ u.setPassword(password);
+ userOkHttp http = new userOkHttp();
+ try {
+ boolean register = http.register(u);
+ if(register)
+ {
+ startActivity(intent);
+ }else{
+ Looper.prepare();
+ Toast.makeText(registerActivity.this, "注册失败", Toast.LENGTH_SHORT).show();
+ Looper.loop();
+ }
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ }
+ else {
+ Looper.prepare();
+ Toast.makeText(registerActivity.this,"两次密码不一致",Toast.LENGTH_SHORT).show();
+ Looper.loop();
+ }
+ }
+ };
+
+}
\ No newline at end of file
diff --git a/orange_android/app/src/main/java/com/example/test/activity/userActivity.java b/orange_android/app/src/main/java/com/example/test/activity/userActivity.java
new file mode 100644
index 0000000..eb9d74b
--- /dev/null
+++ b/orange_android/app/src/main/java/com/example/test/activity/userActivity.java
@@ -0,0 +1,68 @@
+package com.example.test.activity;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.TextView;
+
+import com.example.test.MainActivity;
+import com.example.test.R;
+
+public class userActivity extends AppCompatActivity implements View.OnClickListener {
+
+ private TextView userText;
+ private TextView sexText;
+ private TextView adressText;
+ private Button logoutBut;
+ private View shoppingView;
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.content_user);
+ display();
+ }
+
+ private void display() {
+ Intent intent = getIntent();
+ Bundle bundle = intent.getExtras();
+ String username = "账号:"+bundle.getString("username");
+ String sex = "性别:"+bundle.getString("sex");
+ String adress = "城市:"+bundle.getString("adress");
+ userText = findViewById(R.id.user_username);
+ userText.setText(username);
+ sexText = findViewById(R.id.user_sex);
+ sexText.setText(sex);
+ adressText = findViewById(R.id.user_city);
+ adressText.setText(adress);
+ logoutBut = findViewById(R.id.logout);
+ logoutBut.setOnClickListener(this);
+ shoppingView = findViewById(R.id.user_shopping_line);
+ shoppingView.setOnClickListener(this);
+
+ }
+
+ @Override
+ public void onClick(View view) {
+ switch (view.getId())
+ {
+ case R.id.logout:
+ logout();
+ break;
+ case R.id.user_shopping_line:
+ goShopping();
+ }
+ }
+
+ protected void goShopping() {
+ Intent intent = new Intent(this, fruitActivity.class);
+ startActivity(intent);
+ }
+
+ protected void logout() {
+ Intent intent = new Intent(this, MainActivity.class);
+ startActivity(intent);
+ }
+}
\ No newline at end of file
diff --git a/orange_android/app/src/main/java/com/example/test/adapter/fruitContentAdapter.java b/orange_android/app/src/main/java/com/example/test/adapter/fruitContentAdapter.java
new file mode 100644
index 0000000..18f8cc1
--- /dev/null
+++ b/orange_android/app/src/main/java/com/example/test/adapter/fruitContentAdapter.java
@@ -0,0 +1,78 @@
+package com.example.test.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.example.test.R;
+import com.example.test.entity.fruitContent;
+
+import java.util.List;
+
+public class fruitContentAdapter extends BaseAdapter {
+ private Holder holder;
+ private fruitContent fruitContents[];
+ private Context context;
+
+ public fruitContentAdapter() {
+ }
+
+ public fruitContentAdapter(fruitContent fruitContents[], Context context) {
+ this.fruitContents = fruitContents;
+ this.context = context;
+ }
+
+ @Override
+ public int getCount() {
+ return fruitContents.length;
+ }
+
+ @Override
+ public Object getItem(int i) {
+ return fruitContents[i];
+ }
+
+ @Override
+ public long getItemId(int i) {
+ return i;
+ }
+ public void setBackgroundColor(int position,String color){
+
+ }
+
+ @Override
+ public View getView(int i, View convertview, ViewGroup viewGroup) {
+ holder = new fruitContentAdapter.Holder();
+ fruitContent content = fruitContents[i];
+ if(convertview==null){
+ convertview = LayoutInflater.from(context).inflate(R.layout.fruit_content_item,null);
+ holder.iv_img = convertview.findViewById(R.id.fruit_content_img);
+ holder.tv_name = convertview.findViewById(R.id.fruit_content_name);
+ holder.tv_desc = convertview.findViewById(R.id.fruit_content_desc);
+ holder.tv_tag = convertview.findViewById(R.id.fruit_content_tag);
+ holder.tv_price = convertview.findViewById(R.id.fruit_content_price);
+ convertview.setTag(holder);
+ }else {
+ holder = (fruitContentAdapter.Holder) convertview.getTag();
+ }
+ holder.iv_img.setImageResource(content.getImg());
+ holder.tv_name.setText(content.getName());
+// holder.tv_name.getPaint().setFakeBoldText(true);
+ holder.tv_desc.setText(content.getDesc());
+ if(content.getTag()==1)
+ holder.tv_tag.setText("爆款直降");
+ holder.tv_price.setText(content.getPrice()+"");
+ return convertview;
+ }
+ static class Holder{
+ ImageView iv_img;
+ TextView tv_name;
+ TextView tv_desc;
+ TextView tv_tag;
+ TextView tv_price;
+ }
+}
diff --git a/orange_android/app/src/main/java/com/example/test/adapter/fruitKindAdapter.java b/orange_android/app/src/main/java/com/example/test/adapter/fruitKindAdapter.java
new file mode 100644
index 0000000..e572a4d
--- /dev/null
+++ b/orange_android/app/src/main/java/com/example/test/adapter/fruitKindAdapter.java
@@ -0,0 +1,84 @@
+package com.example.test.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.ImageView;
+import android.widget.TextView;
+
+import com.example.test.R;
+import com.example.test.entity.fruitKind;
+import com.example.test.fragment.fruitKindFragment;
+
+import java.util.List;
+
+public class fruitKindAdapter extends BaseAdapter {
+ private List fruitKinds;
+ private Context context;
+ private Holder holder;
+ private int selected_item=0;
+
+ public fruitKindAdapter() {
+ }
+
+ public fruitKindAdapter(List fruitKinds, Context context) {
+ this.fruitKinds = fruitKinds;
+ this.context = context;
+ }
+
+ @Override
+ public int getCount() {
+ return fruitKinds.size();
+ }
+
+ @Override
+ public Object getItem(int i) {
+ return fruitKinds.get(i);
+ }
+
+ @Override
+ public long getItemId(int i) {
+ return i;
+ }
+
+ @Override
+ public View getView(int i, View convertview, ViewGroup viewGroup) {
+ fruitKind kind = fruitKinds.get(i);
+ if(convertview==null){
+ holder = new Holder();
+ // Log.i("init",i+" "+convertview);
+ convertview = LayoutInflater.from(context).inflate(R.layout.fruit_kind_item,null);
+ if(i == 0){
+ convertview.setBackgroundResource(R.color.gray);
+ }
+ holder.iv_img = convertview.findViewById(R.id.kind_img);
+ holder.tv_name = convertview.findViewById(R.id.kind_name);
+ if(kind.getImg()!=0)
+ holder.iv_img.setImageResource(kind.getImg());
+ holder.tv_name.setText(kind.getName());
+ convertview.setTag(holder);
+ }else {
+ holder = (Holder) convertview.getTag();
+ holder.iv_img.setImageResource(kind.getImg());
+ holder.tv_name.setText(kind.getName());
+ fruitKindFragment fruitKindFragment = new fruitKindFragment();
+ int selected_item = fruitKindFragment.getSelected_item();
+ if(i!=selected_item)
+ convertview.setBackgroundResource(R.color.white);
+ else
+ convertview.setBackgroundResource(R.color.gray);
+ //Log.i("after",i+" "+convertview);
+
+
+ }
+ return convertview;
+ }
+ static class Holder{
+ ImageView iv_img;
+ TextView tv_name;
+ }
+}
diff --git a/orange_android/app/src/main/java/com/example/test/adapter/homeFruitKindAdapter.java b/orange_android/app/src/main/java/com/example/test/adapter/homeFruitKindAdapter.java
new file mode 100644
index 0000000..c328004
--- /dev/null
+++ b/orange_android/app/src/main/java/com/example/test/adapter/homeFruitKindAdapter.java
@@ -0,0 +1,68 @@
+package com.example.test.adapter;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.example.test.R;
+import com.example.test.entity.product;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class homeFruitKindAdapter extends BaseAdapter {
+ private int imgs[] = {};
+ private String names[];
+ private List bitmaps;
+ private Context context;
+
+
+ public homeFruitKindAdapter(int[] imgs, String[] names, Context context) {
+ this.imgs = imgs;
+ this.names = names;
+ this.context = context;
+ }
+
+ public homeFruitKindAdapter(Listbitmaps,String names[], Context context) {
+ this.bitmaps = bitmaps;
+ this.names = names;
+ this.context = context;
+ }
+ @Override
+ public int getCount() {
+ return names.length;
+ }
+
+ @Override
+ public Object getItem(int i) {
+// int img= imgs[i];
+ String name = names[i];
+ List