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..8b854ab --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +BigOrange \ 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..518dda1 --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..27e91da --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + 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..3b8a747 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,34 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 29 + buildToolsVersion "29.0.2" + defaultConfig { + applicationId "com.orangesale.cn" + minSdkVersion 26 + targetSdkVersion 29 + 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 = 1.8 + targetCompatibility = 1.8 + } +} + +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/orangesale/cn/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/orangesale/cn/ExampleInstrumentedTest.java new file mode 100644 index 0000000..713d673 --- /dev/null +++ b/app/src/androidTest/java/com/orangesale/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..e9dc395 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/orangesale/cn/MainActivity.java b/app/src/main/java/com/orangesale/cn/MainActivity.java new file mode 100644 index 0000000..d2f9fb8 --- /dev/null +++ b/app/src/main/java/com/orangesale/cn/MainActivity.java @@ -0,0 +1,72 @@ +package com.orangesale.cn; + +import android.content.Intent; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; + +import com.orangesale.cn.activity.OrangeDatabase; +import com.orangesale.cn.activity.RegisterActivity; +import com.orangesale.cn.activity.UserActivity; + +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: + if (validateLogin()) { + Intent intent1 = new Intent(MainActivity.this, UserActivity.class); + Bundle bundle = new Bundle(); + OrangeDatabase orangeDatabase = new OrangeDatabase(MainActivity.this); + bundle.putString("username", usernameText.getText().toString()); + bundle = orangeDatabase.queryUserInfo(orangeDatabase.getReadableDatabase(), bundle); + intent1.putExtras(bundle); + startActivity(intent1); + } else { + Toast.makeText(MainActivity.this, "账号或者密码错误", Toast.LENGTH_SHORT).show(); + } + 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); + } + private boolean validateLogin(){ + String username = usernameText.getText().toString(); + String password = paswdEdit.getText().toString(); + OrangeDatabase orangeDatabase =new OrangeDatabase(MainActivity.this); + SQLiteDatabase sqLiteDatabase = orangeDatabase.getReadableDatabase(); + Cursor cursor = sqLiteDatabase.rawQuery("select * from orange_user where username=?and password = ?",new String[]{username,password}); + if (cursor.getCount() > 0) { + return true; + } + return false; + } +} diff --git a/app/src/main/java/com/orangesale/cn/activity/CategoryActivity.java b/app/src/main/java/com/orangesale/cn/activity/CategoryActivity.java new file mode 100644 index 0000000..32869c3 --- /dev/null +++ b/app/src/main/java/com/orangesale/cn/activity/CategoryActivity.java @@ -0,0 +1,102 @@ +package com.orangesale.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.orangesale.cn.R; +import com.orangesale.cn.adapter.Adapter; +import com.orangesale.cn.entity.Product; +import com.orangesale.cn.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("冰糖橙"); + productCategory.add("褚橙"); + productCategory.add("脐橙"); + + + Product product = new Product(); + product.setImageUrlId(R.drawable.bingtangcheng); + product.setProductName("冰糖橙"); + product.setProductPrice(new BigDecimal("9.9")); + product.setProductIntroduction("来自云南元江,地处干热河谷地带,造就了冰糖橙独特的口感和甜度~~。"); + + Product product1 = new Product(); + product1.setImageUrlId(R.drawable.chucheng); + product1.setProductName("褚橙"); + product1.setProductPrice(new BigDecimal("29.9")); + product1.setProductIntroduction("果香浓郁,甘润沁爽,每一颗褚橙,都是历练后的甘甜~~"); + + + Product product2 = new Product(); + product2.setImageUrlId(R.drawable.qicheng); + product2.setProductName("脐橙"); + product2.setProductPrice(new BigDecimal("39.9")); + product2.setProductIntroduction("赣南脐橙果大形正,甜嫩爆浆,入口化渣,风味浓郁~~"); + + + 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/app/src/main/java/com/orangesale/cn/activity/OrangeDatabase.java b/app/src/main/java/com/orangesale/cn/activity/OrangeDatabase.java new file mode 100644 index 0000000..586e649 --- /dev/null +++ b/app/src/main/java/com/orangesale/cn/activity/OrangeDatabase.java @@ -0,0 +1,53 @@ +package com.orangesale.cn.activity; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; +import android.os.Bundle; + +import androidx.annotation.Nullable; + +public class OrangeDatabase extends SQLiteOpenHelper { + + public OrangeDatabase(@Nullable Context context) { + super(context, "orange", null, 1); + } + + @Override + public void onCreate(SQLiteDatabase db) { + //创建用户表 + String sql = "create table orange_user(id integer primary key autoincrement,username varchar(50),password varchar(50),sex varchar(10),city carchar(50))"; + db.execSQL(sql); + } + + @Override + + public void onUpgrade(SQLiteDatabase db, int oldVersion,int newVersion) {} + + public void onUpgrade(SQLiteDatabase sqLiteDatabase, String username, String password, String sex, String city) { + ContentValues contentValues = new ContentValues(); + contentValues.put("username", username); + contentValues.put("password", password); + contentValues.put("sex", sex); + contentValues.put("city", city); + sqLiteDatabase.insert("orange_user", null, contentValues); + sqLiteDatabase.close(); + } + public void insertUsers(){} + public Bundle queryUserInfo(SQLiteDatabase sqLiteDatabase, Bundle bundle) { + String username = bundle.getString("username"); + Cursor cursor = sqLiteDatabase.rawQuery("select * from orange_user where username=?", new String[]{username}); + if (cursor != null) { + while (cursor.moveToNext()) { + bundle.putString("sex", cursor.getString(3)); + bundle.putString("city", cursor.getString(4)); + } + } + //cursor.close(); + sqLiteDatabase.close(); + return bundle; + } + +} diff --git a/app/src/main/java/com/orangesale/cn/activity/RegisterActivity.java b/app/src/main/java/com/orangesale/cn/activity/RegisterActivity.java new file mode 100644 index 0000000..6d8cf3d --- /dev/null +++ b/app/src/main/java/com/orangesale/cn/activity/RegisterActivity.java @@ -0,0 +1,162 @@ +package com.orangesale.cn.activity; + +import android.content.ContentValues; +import android.content.Intent; +import android.database.sqlite.SQLiteDatabase; +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.orangesale.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); + OrangeDatabase orangeDatabase = new OrangeDatabase(RegisterActivity.this); + SQLiteDatabase sqLiteDatabase = orangeDatabase.getWritableDatabase(); + insertData(sqLiteDatabase, bundle); + Intent intent = new Intent(RegisterActivity.this, UserActivity.class); + 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 ? "男" : "女"; + } + + private void insertData(SQLiteDatabase sqLiteDatabase, Bundle bundle) { + ContentValues contentValues = new ContentValues(); + contentValues.put("username", bundle.getString("username")); + contentValues.put("password", bundle.getString("password")); + contentValues.put("sex", bundle.getString("sex")); + contentValues.put("city", bundle.getString("city")); + sqLiteDatabase.insert("orange_user", null, contentValues); + sqLiteDatabase.close(); + + } +} diff --git a/app/src/main/java/com/orangesale/cn/activity/UserActivity.java b/app/src/main/java/com/orangesale/cn/activity/UserActivity.java new file mode 100644 index 0000000..4315cb2 --- /dev/null +++ b/app/src/main/java/com/orangesale/cn/activity/UserActivity.java @@ -0,0 +1,70 @@ +package com.orangesale.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.orangesale.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); + + case R.id.user_sex: + Intent intent2 = new Intent(UserActivity.this, CategoryActivity.class); + startActivity(intent2); + break; + } + } +} diff --git a/app/src/main/java/com/orangesale/cn/adapter/Adapter.java b/app/src/main/java/com/orangesale/cn/adapter/Adapter.java new file mode 100644 index 0000000..fd28415 --- /dev/null +++ b/app/src/main/java/com/orangesale/cn/adapter/Adapter.java @@ -0,0 +1,69 @@ +package com.orangesale.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.orangesale.cn.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.GREEN); + } 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/orangesale/cn/entity/OrangeUser.java b/app/src/main/java/com/orangesale/cn/entity/OrangeUser.java new file mode 100644 index 0000000..bc3e24e --- /dev/null +++ b/app/src/main/java/com/orangesale/cn/entity/OrangeUser.java @@ -0,0 +1,59 @@ +package com.orangesale.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/orangesale/cn/entity/Product.java b/app/src/main/java/com/orangesale/cn/entity/Product.java new file mode 100644 index 0000000..500f731 --- /dev/null +++ b/app/src/main/java/com/orangesale/cn/entity/Product.java @@ -0,0 +1,37 @@ +package com.orangesale.cn.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 String getProductIntroduction() {return productIntroduction;} + + public void setProductPrice(BigDecimal productPrice) { + this.productPrice = productPrice; + } + public void setProductIntroduction(String productIntroduction) {this.productIntroduction = productIntroduction;} + + public Integer getImageUrlId() { + return imageUrlId; + } + + public void setImageUrlId(Integer imageUrlId) { + this.imageUrlId = imageUrlId; + } + + private Integer imageUrlId; + private String productName; + private BigDecimal productPrice; + private String productIntroduction; +} diff --git a/app/src/main/java/com/orangesale/cn/fragment/SetDetailFragment.java b/app/src/main/java/com/orangesale/cn/fragment/SetDetailFragment.java new file mode 100644 index 0000000..3ba48dc --- /dev/null +++ b/app/src/main/java/com/orangesale/cn/fragment/SetDetailFragment.java @@ -0,0 +1,60 @@ +package com.orangesale.cn.fragment; + +import static com.orangesale.cn.R.id.category_product_price; + +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.orangesale.cn.R; +import com.orangesale.cn.activity.CategoryActivity; + +import java.util.Objects; + +public class SetDetailFragment extends Fragment { + private View view; + private ImageView imageView;//图片 + private TextView nameText, priceText;//名称,售价 + private TextView introductionText;//介绍 + + + @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()); + introductionText.setText(product.getProductIntroduction()); + }); + return view; + } + + /** + * 内容组件初始化 + */ + private void init() { + imageView = view.findViewById(R.id.category_product_image); + nameText = view.findViewById(R.id.category_product_name); + priceText = view.findViewById(category_product_price); + introductionText = view.findViewById(R.id.category_product_introduction); + } + +} diff --git a/app/src/main/res/drawable - 快捷方式.lnk b/app/src/main/res/drawable - 快捷方式.lnk new file mode 100644 index 0000000..ac0ec82 Binary files /dev/null and b/app/src/main/res/drawable - 快捷方式.lnk differ diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..7fc9a07 --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git a/app/src/main/res/drawable/address.png b/app/src/main/res/drawable/address.png new file mode 100644 index 0000000..7318be0 Binary files /dev/null and b/app/src/main/res/drawable/address.png differ diff --git a/app/src/main/res/drawable/arrow_down.png b/app/src/main/res/drawable/arrow_down.png new file mode 100644 index 0000000..6d95bb5 Binary files /dev/null and b/app/src/main/res/drawable/arrow_down.png differ diff --git a/app/src/main/res/drawable/arrow_left.png b/app/src/main/res/drawable/arrow_left.png new file mode 100644 index 0000000..365afe0 Binary files /dev/null and b/app/src/main/res/drawable/arrow_left.png differ diff --git a/app/src/main/res/drawable/arrow_right.png b/app/src/main/res/drawable/arrow_right.png new file mode 100644 index 0000000..84ded85 Binary files /dev/null and b/app/src/main/res/drawable/arrow_right.png differ diff --git a/app/src/main/res/drawable/bingtangcheng.jpeg b/app/src/main/res/drawable/bingtangcheng.jpeg new file mode 100644 index 0000000..daac6c2 Binary files /dev/null and b/app/src/main/res/drawable/bingtangcheng.jpeg differ diff --git a/app/src/main/res/drawable/button_login.xml b/app/src/main/res/drawable/button_login.xml new file mode 100644 index 0000000..a13b012 --- /dev/null +++ b/app/src/main/res/drawable/button_login.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_register.xml b/app/src/main/res/drawable/button_register.xml new file mode 100644 index 0000000..3eb0673 --- /dev/null +++ b/app/src/main/res/drawable/button_register.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/chucheng.jpeg b/app/src/main/res/drawable/chucheng.jpeg new file mode 100644 index 0000000..ddafbb2 Binary files /dev/null and b/app/src/main/res/drawable/chucheng.jpeg differ diff --git a/app/src/main/res/drawable/city.png b/app/src/main/res/drawable/city.png new file mode 100644 index 0000000..790fb2b Binary files /dev/null and b/app/src/main/res/drawable/city.png differ diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..0d025f9 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/juzi.png b/app/src/main/res/drawable/juzi.png new file mode 100644 index 0000000..106df92 Binary files /dev/null and b/app/src/main/res/drawable/juzi.png differ diff --git a/app/src/main/res/drawable/orange.png b/app/src/main/res/drawable/orange.png new file mode 100644 index 0000000..23ecdef Binary files /dev/null and b/app/src/main/res/drawable/orange.png differ diff --git a/app/src/main/res/drawable/orange1.png b/app/src/main/res/drawable/orange1.png new file mode 100644 index 0000000..70e8db8 Binary files /dev/null and b/app/src/main/res/drawable/orange1.png differ diff --git a/app/src/main/res/drawable/password.png b/app/src/main/res/drawable/password.png new file mode 100644 index 0000000..1c6c4f5 Binary files /dev/null and b/app/src/main/res/drawable/password.png differ diff --git a/app/src/main/res/drawable/qicheng.jpeg b/app/src/main/res/drawable/qicheng.jpeg new file mode 100644 index 0000000..b99aa31 Binary files /dev/null and b/app/src/main/res/drawable/qicheng.jpeg differ diff --git a/app/src/main/res/drawable/search.png b/app/src/main/res/drawable/search.png new file mode 100644 index 0000000..a8b5ac0 Binary files /dev/null and b/app/src/main/res/drawable/search.png differ diff --git a/app/src/main/res/drawable/setting.png b/app/src/main/res/drawable/setting.png new file mode 100644 index 0000000..34c2f2f Binary files /dev/null and b/app/src/main/res/drawable/setting.png differ diff --git a/app/src/main/res/drawable/sex.png b/app/src/main/res/drawable/sex.png new file mode 100644 index 0000000..acb8197 Binary files /dev/null and b/app/src/main/res/drawable/sex.png differ diff --git a/app/src/main/res/drawable/spinner_drop_down_shape.xml b/app/src/main/res/drawable/spinner_drop_down_shape.xml new file mode 100644 index 0000000..91bf727 --- /dev/null +++ b/app/src/main/res/drawable/spinner_drop_down_shape.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sure_apssword.png b/app/src/main/res/drawable/sure_apssword.png new file mode 100644 index 0000000..0e7cee9 Binary files /dev/null and b/app/src/main/res/drawable/sure_apssword.png differ diff --git a/app/src/main/res/drawable/user.png b/app/src/main/res/drawable/user.png new file mode 100644 index 0000000..47d8362 Binary files /dev/null and b/app/src/main/res/drawable/user.png differ diff --git a/app/src/main/res/drawable/user_account.png b/app/src/main/res/drawable/user_account.png new file mode 100644 index 0000000..e70142a Binary files /dev/null and b/app/src/main/res/drawable/user_account.png differ diff --git a/app/src/main/res/drawable/user_general.png b/app/src/main/res/drawable/user_general.png new file mode 100644 index 0000000..cf57947 Binary files /dev/null and b/app/src/main/res/drawable/user_general.png differ diff --git a/app/src/main/res/drawable/user_icon.png b/app/src/main/res/drawable/user_icon.png new file mode 100644 index 0000000..293ad7a Binary files /dev/null and b/app/src/main/res/drawable/user_icon.png differ diff --git a/app/src/main/res/drawable/user_icon1.png b/app/src/main/res/drawable/user_icon1.png new file mode 100644 index 0000000..d5309b1 Binary files /dev/null and b/app/src/main/res/drawable/user_icon1.png differ diff --git a/app/src/main/res/drawable/user_pay.png b/app/src/main/res/drawable/user_pay.png new file mode 100644 index 0000000..3fd6f50 Binary files /dev/null and b/app/src/main/res/drawable/user_pay.png differ diff --git a/app/src/main/res/drawable/user_sex.png b/app/src/main/res/drawable/user_sex.png new file mode 100644 index 0000000..da0e318 Binary files /dev/null and b/app/src/main/res/drawable/user_sex.png differ diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..4fc2444 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/category_detail.xml b/app/src/main/res/layout/category_detail.xml new file mode 100644 index 0000000..476b522 --- /dev/null +++ b/app/src/main/res/layout/category_detail.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/category_list_item.xml b/app/src/main/res/layout/category_list_item.xml new file mode 100644 index 0000000..315a237 --- /dev/null +++ b/app/src/main/res/layout/category_list_item.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/categoty_detail_content.xml b/app/src/main/res/layout/categoty_detail_content.xml new file mode 100644 index 0000000..11f083d --- /dev/null +++ b/app/src/main/res/layout/categoty_detail_content.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/content_category.xml b/app/src/main/res/layout/content_category.xml new file mode 100644 index 0000000..440633f --- /dev/null +++ b/app/src/main/res/layout/content_category.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/content_user.xml b/app/src/main/res/layout/content_user.xml new file mode 100644 index 0000000..968741a --- /dev/null +++ b/app/src/main/res/layout/content_user.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +