diff --git a/chapter06_net/.gitignore b/.gitignore similarity index 100% rename from chapter06_net/.gitignore rename to .gitignore diff --git a/chapter04_sqlite/.idea/.name b/.idea/.name old mode 100755 new mode 100644 similarity index 100% rename from chapter04_sqlite/.idea/.name rename to .idea/.name diff --git a/chapter06_net/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml similarity index 100% rename from chapter06_net/.idea/codeStyles/Project.xml rename to .idea/codeStyles/Project.xml diff --git a/chapter06_net/.idea/gradle.xml b/.idea/gradle.xml similarity index 100% rename from chapter06_net/.idea/gradle.xml rename to .idea/gradle.xml diff --git a/chapter06_net/.idea/misc.xml b/.idea/misc.xml similarity index 100% rename from chapter06_net/.idea/misc.xml rename to .idea/misc.xml diff --git a/chapter06_net/.idea/runConfigurations.xml b/.idea/runConfigurations.xml similarity index 100% rename from chapter06_net/.idea/runConfigurations.xml rename to .idea/runConfigurations.xml diff --git a/README.md b/README.md deleted file mode 100644 index a8988a1..0000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# AndroidProject - diff --git a/chapter03_fragment/app/.gitignore b/app/.gitignore similarity index 100% rename from chapter03_fragment/app/.gitignore rename to app/.gitignore diff --git a/chapter06_net/app/build.gradle b/app/build.gradle similarity index 94% rename from chapter06_net/app/build.gradle rename to app/build.gradle index 1b8c071..bcb3316 100644 --- a/chapter06_net/app/build.gradle +++ b/app/build.gradle @@ -27,6 +27,7 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) /*引入OkHTTP*/ implementation "com.squareup.okhttp3:okhttp:4.2.2" + implementation group: 'com.alibaba', name: 'fastjson', version: '1.2.12' implementation 'org.conscrypt:conscrypt-android:2.2.1' implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' diff --git a/chapter03_fragment/app/proguard-rules.pro b/app/proguard-rules.pro similarity index 100% rename from chapter03_fragment/app/proguard-rules.pro rename to app/proguard-rules.pro diff --git a/chapter03_fragment/app/src/androidTest/java/com/orangesale/cn/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/orangesale/cn/ExampleInstrumentedTest.java similarity index 100% rename from chapter03_fragment/app/src/androidTest/java/com/orangesale/cn/ExampleInstrumentedTest.java rename to app/src/androidTest/java/com/orangesale/cn/ExampleInstrumentedTest.java diff --git a/chapter06_net/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml similarity index 92% rename from chapter06_net/app/src/main/AndroidManifest.xml rename to app/src/main/AndroidManifest.xml index 9bc5ef0..e8bc712 100644 --- a/chapter06_net/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -23,8 +23,7 @@ + android:enabled="true" /> \ No newline at end of file diff --git a/chapter04_sqlite/app/src/main/java/com/orangesale/cn/MainActivity.java b/app/src/main/java/com/orangesale/cn/MainActivity.java old mode 100755 new mode 100644 similarity index 67% rename from chapter04_sqlite/app/src/main/java/com/orangesale/cn/MainActivity.java rename to app/src/main/java/com/orangesale/cn/MainActivity.java index 5575870..19de626 --- a/chapter04_sqlite/app/src/main/java/com/orangesale/cn/MainActivity.java +++ b/app/src/main/java/com/orangesale/cn/MainActivity.java @@ -1,79 +1,112 @@ -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.IndexActivity; -import com.orangesale.cn.activity.RegisterActivity; -import com.orangesale.cn.dataoperation.OrangeDatabase; - -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, IndexActivity.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); - } - - /** - * 登录验证 - * - * @return - */ - 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; - } -} +package com.orangesale.cn; + +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.orangesale.cn.activity.IndexActivity; +import com.orangesale.cn.activity.RegisterActivity; +import com.orangesale.cn.dataoperation.OrangeDatabase; +import com.orangesale.cn.entity.OrangeUser; +import com.orangesale.cn.netrequest.OkHttpUser; + +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.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: + //注册时,我们引入了数据库,登录这里可以通过数据库进行验证,验证跳转到首页,不通过进行提示 + Thread thread = new Thread(runnable); + thread.start(); + 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); + } + + /** + * 登录验证 + * + * @return + */ + 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; + } + + /** + * 登录验证 + */ + Runnable runnable = new Runnable() { + @Override + public void run() { + String username = usernameText.getText().toString(); + String password = paswdEdit.getText().toString(); + OrangeUser orangeUser = new OrangeUser(); + orangeUser.setUsername(username); + orangeUser.setPassword(password); + OkHttpUser okHttpUser = new OkHttpUser(); + OrangeUser orangeUser1 = null; + try { + orangeUser1 = okHttpUser.userLogin(orangeUser); + if (orangeUser1 != null) { + Intent intent1 = new Intent(MainActivity.this, IndexActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("username", usernameText.getText().toString()); + bundle.putString("password", orangeUser1.getPassword()); + bundle.putString("city", orangeUser1.getCity()); + bundle.putString("sex", orangeUser1.getSex()); + intent1.putExtras(bundle); + startActivity(intent1); + } else { + //解决在子线程中调用Toast的异常情况处理 + Looper.prepare(); + Toast.makeText(MainActivity.this, "账号或者密码错误", Toast.LENGTH_SHORT).show(); + Looper.loop(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + }; +} diff --git a/chapter06_net/app/src/main/java/com/orangesale/cn/activity/CategoryActivity.java b/app/src/main/java/com/orangesale/cn/activity/CategoryActivity.java similarity index 100% rename from chapter06_net/app/src/main/java/com/orangesale/cn/activity/CategoryActivity.java rename to app/src/main/java/com/orangesale/cn/activity/CategoryActivity.java diff --git a/chapter06_net/app/src/main/java/com/orangesale/cn/activity/IndexActivity.java b/app/src/main/java/com/orangesale/cn/activity/IndexActivity.java similarity index 100% rename from chapter06_net/app/src/main/java/com/orangesale/cn/activity/IndexActivity.java rename to app/src/main/java/com/orangesale/cn/activity/IndexActivity.java diff --git a/chapter06_net/app/src/main/java/com/orangesale/cn/activity/RegisterActivity.java b/app/src/main/java/com/orangesale/cn/activity/RegisterActivity.java similarity index 54% rename from chapter06_net/app/src/main/java/com/orangesale/cn/activity/RegisterActivity.java rename to app/src/main/java/com/orangesale/cn/activity/RegisterActivity.java index 3edcd0c..2bcc114 100644 --- a/chapter06_net/app/src/main/java/com/orangesale/cn/activity/RegisterActivity.java +++ b/app/src/main/java/com/orangesale/cn/activity/RegisterActivity.java @@ -1,10 +1,9 @@ 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.os.Looper; import android.view.View; import android.widget.Button; import android.widget.EditText; @@ -17,7 +16,10 @@ import androidx.appcompat.app.AppCompatActivity; import com.lljjcoder.citypickerview.widget.CityPicker; import com.orangesale.cn.R; -import com.orangesale.cn.dataoperation.OrangeDatabase; +import com.orangesale.cn.entity.OrangeUser; +import com.orangesale.cn.netrequest.OkHttpUser; + +import java.io.IOException; public class RegisterActivity extends AppCompatActivity implements View.OnClickListener, RadioGroup.OnCheckedChangeListener { private EditText usernameEdit, passwordEdit, surePasswordEdit; @@ -60,7 +62,9 @@ public class RegisterActivity extends AppCompatActivity implements View.OnClickL break; case R.id.reg_register: //注册验证方法 - validateRegister(); + //validateRegister(); + Thread thread = new Thread(runnable); + thread.start(); break; } @@ -106,44 +110,6 @@ public class RegisterActivity extends AppCompatActivity implements View.OnClickL } - /** - * 注册验证 - */ - public void validateRegister() { - 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); - //本节将使用安卓自身带的SQLite数据库的方式存储注册的信息(之前直接传输显示在界面是的方式) - OrangeDatabase orangeDatabase = new OrangeDatabase(RegisterActivity.this); - SQLiteDatabase sqLiteDatabase = orangeDatabase.getWritableDatabase(); - insertData(sqLiteDatabase, bundle); - Intent intent = new Intent(RegisterActivity.this, IndexActivity.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的值 @@ -151,18 +117,60 @@ public class RegisterActivity extends AppCompatActivity implements View.OnClickL } /** - * 插入数据库的值 - * - * @param sqLiteDatabase - * @param bundle + * 注册验证 */ - 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(); - } + Runnable runnable = new Runnable() { + @Override + public void run() { + 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); + OrangeUser orangeUser = new OrangeUser(); + orangeUser.setUsername(username); + orangeUser.setPassword(password); + orangeUser.setCity(city); + orangeUser.setSex(sexStr); + //将使用安卓自身带的SQLite数据库换成调用okhttp的方式 + OkHttpUser okHttpUser = new OkHttpUser(); + try { + if (okHttpUser.userRegister(orangeUser)) { + Intent intent = new Intent(RegisterActivity.this, IndexActivity.class); + intent.putExtras(bundle); + startActivity(intent); + } else { + Looper.prepare(); + Toast.makeText(RegisterActivity.this, "注册失败!", Toast.LENGTH_SHORT).show(); + Looper.loop(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } else { + Looper.prepare(); + Toast.makeText(RegisterActivity.this, "请选择地址", Toast.LENGTH_SHORT).show(); + Looper.loop(); + } + } else { + Looper.prepare(); + Toast.makeText(RegisterActivity.this, "账号或密码未填写", Toast.LENGTH_SHORT).show(); + Looper.loop(); + } + } else { + Looper.prepare(); + Toast.makeText(RegisterActivity.this, "两次密码输入不一致", Toast.LENGTH_SHORT).show(); + Looper.loop(); + } + } + }; } diff --git a/chapter06_net/app/src/main/java/com/orangesale/cn/activity/UserActivity.java b/app/src/main/java/com/orangesale/cn/activity/UserActivity.java similarity index 100% rename from chapter06_net/app/src/main/java/com/orangesale/cn/activity/UserActivity.java rename to app/src/main/java/com/orangesale/cn/activity/UserActivity.java diff --git a/chapter03_fragment/app/src/main/java/com/orangesale/cn/adapter/Adapter.java b/app/src/main/java/com/orangesale/cn/adapter/Adapter.java similarity index 100% rename from chapter03_fragment/app/src/main/java/com/orangesale/cn/adapter/Adapter.java rename to app/src/main/java/com/orangesale/cn/adapter/Adapter.java diff --git a/chapter06_net/app/src/main/java/com/orangesale/cn/adapter/ListViewAdapter.java b/app/src/main/java/com/orangesale/cn/adapter/ListViewAdapter.java similarity index 100% rename from chapter06_net/app/src/main/java/com/orangesale/cn/adapter/ListViewAdapter.java rename to app/src/main/java/com/orangesale/cn/adapter/ListViewAdapter.java diff --git a/chapter06_net/app/src/main/java/com/orangesale/cn/adapter/ProductAdapter.java b/app/src/main/java/com/orangesale/cn/adapter/ProductAdapter.java similarity index 69% rename from chapter06_net/app/src/main/java/com/orangesale/cn/adapter/ProductAdapter.java rename to app/src/main/java/com/orangesale/cn/adapter/ProductAdapter.java index b3f61ce..30f5558 100644 --- a/chapter06_net/app/src/main/java/com/orangesale/cn/adapter/ProductAdapter.java +++ b/app/src/main/java/com/orangesale/cn/adapter/ProductAdapter.java @@ -1,7 +1,6 @@ package com.orangesale.cn.adapter; import android.content.Context; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -10,27 +9,28 @@ import android.widget.ImageView; import android.widget.TextView; import com.orangesale.cn.R; -import com.orangesale.cn.entity.Product; +import com.orangesale.cn.entity.OrangeProductPack; import java.util.List; public class ProductAdapter extends BaseAdapter { - private List productList; + //private List productList; + private List orangeProductList; private LayoutInflater layoutInflater; - public ProductAdapter(Context context, List productList) { - this.productList = productList; + public ProductAdapter(Context context, List orangeProductList) { + this.orangeProductList = orangeProductList; this.layoutInflater = LayoutInflater.from(context); } @Override public int getCount() { - return productList.size(); + return orangeProductList.size(); } @Override public Object getItem(int position) { - return productList.get(position); + return orangeProductList.get(position); } @Override @@ -42,7 +42,6 @@ public class ProductAdapter extends BaseAdapter { public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView == null) { - Log.i("aa", "getView: "+"aa"); convertView = layoutInflater.inflate(R.layout.categoty_detail_content, null); viewHolder = new ViewHolder(); viewHolder.productImage = convertView.findViewById(R.id.category_product_image); @@ -52,12 +51,11 @@ public class ProductAdapter extends BaseAdapter { } else { viewHolder = (ViewHolder) convertView.getTag(); } - Product product = productList.get(position); - Log.i("product", "getView: "+product.toString()); + OrangeProductPack product = orangeProductList.get(position); if (product != null) { - viewHolder.productImage.setBackgroundResource(product.getImageUrlId()); - viewHolder.productName.setText(product.getProductName()); - viewHolder.productPrice.setText(String.valueOf(product.getProductPrice())); + viewHolder.productImage.setImageBitmap(product.getImgBitmap()); + viewHolder.productName.setText(product.getName()); + viewHolder.productPrice.setText(String.format("%s元", String.valueOf(product.getPrice()))); } return convertView; } @@ -66,4 +64,5 @@ public class ProductAdapter extends BaseAdapter { ImageView productImage; TextView productName, productPrice; } + } diff --git a/chapter06_net/app/src/main/java/com/orangesale/cn/dataoperation/OrangeDatabase.java b/app/src/main/java/com/orangesale/cn/dataoperation/OrangeDatabase.java similarity index 100% rename from chapter06_net/app/src/main/java/com/orangesale/cn/dataoperation/OrangeDatabase.java rename to app/src/main/java/com/orangesale/cn/dataoperation/OrangeDatabase.java diff --git a/chapter06_net/app/src/main/java/com/orangesale/cn/entity/Condition.java b/app/src/main/java/com/orangesale/cn/entity/Condition.java similarity index 100% rename from chapter06_net/app/src/main/java/com/orangesale/cn/entity/Condition.java rename to app/src/main/java/com/orangesale/cn/entity/Condition.java diff --git a/app/src/main/java/com/orangesale/cn/entity/OrangeMessage.java b/app/src/main/java/com/orangesale/cn/entity/OrangeMessage.java new file mode 100644 index 0000000..48f63f5 --- /dev/null +++ b/app/src/main/java/com/orangesale/cn/entity/OrangeMessage.java @@ -0,0 +1,52 @@ +package com.orangesale.cn.entity; + +import java.sql.Timestamp; + +public class OrangeMessage { + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public Timestamp getSendTime() { + return sendTime; + } + + public void setSendTime(Timestamp sendTime) { + this.sendTime = sendTime; + } + + public String getUsed() { + return used; + } + + public void setUsed(String used) { + this.used = used; + } + + private Integer id; + private String content; + private Timestamp sendTime; + private String used; + + @Override + public String toString() { + return "OrangeMessage{" + + "id=" + id + + ", content='" + content + '\'' + + ", sendTime=" + sendTime + + ", used='" + used + '\'' + + '}'; + } +} diff --git a/app/src/main/java/com/orangesale/cn/entity/OrangeProduct.java b/app/src/main/java/com/orangesale/cn/entity/OrangeProduct.java new file mode 100644 index 0000000..29bc9aa --- /dev/null +++ b/app/src/main/java/com/orangesale/cn/entity/OrangeProduct.java @@ -0,0 +1,64 @@ +package com.orangesale.cn.entity; + +import java.math.BigDecimal; +import java.sql.Timestamp; + +public class OrangeProduct { + private Integer id; + private String name; + private BigDecimal price; + private String imgUrl; + + @Override + public String toString() { + return "OrangeProduct{" + + "id=" + id + + ", name='" + name + '\'' + + ", price=" + price + + ", imgUrl='" + imgUrl + '\'' + + ", addTime=" + addTime + + '}'; + } + + public Timestamp getAddTime() { + return addTime; + } + + public void setAddTime(Timestamp addTime) { + this.addTime = addTime; + } + + private Timestamp addTime; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public BigDecimal getPrice() { + return price; + } + + public void setPrice(BigDecimal price) { + this.price = price; + } + + public String getImgUrl() { + return imgUrl; + } + + public void setImgUrl(String imgUrl) { + this.imgUrl = imgUrl; + } +} diff --git a/app/src/main/java/com/orangesale/cn/entity/OrangeProductPack.java b/app/src/main/java/com/orangesale/cn/entity/OrangeProductPack.java new file mode 100644 index 0000000..06f36c9 --- /dev/null +++ b/app/src/main/java/com/orangesale/cn/entity/OrangeProductPack.java @@ -0,0 +1,66 @@ +package com.orangesale.cn.entity; + +import android.graphics.Bitmap; + +import java.math.BigDecimal; +import java.sql.Timestamp; + +public class OrangeProductPack { + private Integer id; + private String name; + private Timestamp addTime; + private Bitmap imgBitmap; + + public BigDecimal getPrice() { + return price; + } + + public void setPrice(BigDecimal price) { + this.price = price; + } + + private BigDecimal price; + + @Override + public String toString() { + return "OrangeProductPack{" + + "id=" + id + + ", name='" + name + '\'' + + ", addTime=" + addTime + + ", imgBitmap=" + imgBitmap + + ", price=" + price + + '}'; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Timestamp getAddTime() { + return addTime; + } + + public void setAddTime(Timestamp addTime) { + this.addTime = addTime; + } + + public Bitmap getImgBitmap() { + return imgBitmap; + } + + public void setImgBitmap(Bitmap imgBitmap) { + this.imgBitmap = imgBitmap; + } +} diff --git a/chapter03_fragment/app/src/main/java/com/orangesale/cn/entity/OrangeUser.java b/app/src/main/java/com/orangesale/cn/entity/OrangeUser.java similarity index 100% rename from chapter03_fragment/app/src/main/java/com/orangesale/cn/entity/OrangeUser.java rename to app/src/main/java/com/orangesale/cn/entity/OrangeUser.java diff --git a/chapter06_net/app/src/main/java/com/orangesale/cn/entity/Product.java b/app/src/main/java/com/orangesale/cn/entity/Product.java similarity index 100% rename from chapter06_net/app/src/main/java/com/orangesale/cn/entity/Product.java rename to app/src/main/java/com/orangesale/cn/entity/Product.java diff --git a/chapter06_net/app/src/main/java/com/orangesale/cn/entity/ShoppingCart.java b/app/src/main/java/com/orangesale/cn/entity/ShoppingCart.java similarity index 100% rename from chapter06_net/app/src/main/java/com/orangesale/cn/entity/ShoppingCart.java rename to app/src/main/java/com/orangesale/cn/entity/ShoppingCart.java diff --git a/chapter06_net/app/src/main/java/com/orangesale/cn/fragment/IndexFragment.java b/app/src/main/java/com/orangesale/cn/fragment/IndexFragment.java similarity index 78% rename from chapter06_net/app/src/main/java/com/orangesale/cn/fragment/IndexFragment.java rename to app/src/main/java/com/orangesale/cn/fragment/IndexFragment.java index c79cb93..cb0a311 100644 --- a/chapter06_net/app/src/main/java/com/orangesale/cn/fragment/IndexFragment.java +++ b/app/src/main/java/com/orangesale/cn/fragment/IndexFragment.java @@ -1,6 +1,7 @@ package com.orangesale.cn.fragment; import android.app.Fragment; +import android.os.AsyncTask; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -14,8 +15,11 @@ import androidx.annotation.Nullable; import com.orangesale.cn.R; import com.orangesale.cn.adapter.ProductAdapter; +import com.orangesale.cn.entity.OrangeProductPack; import com.orangesale.cn.entity.Product; +import com.orangesale.cn.netrequest.OkHttpClientProduct; +import java.io.IOException; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; @@ -27,6 +31,7 @@ public class IndexFragment extends Fragment implements View.OnClickListener { private GridView gridView; private ProductAdapter productAdapter; private List productList; + private List list = new ArrayList<>(); @Nullable @Override @@ -59,9 +64,8 @@ public class IndexFragment extends Fragment implements View.OnClickListener { appleLine = view.findViewById(R.id.apple); appleLine.setOnClickListener(this); gridView = view.findViewById(R.id.index_famous_gridview); - initData(); - productAdapter = new ProductAdapter(getActivity(), productList); - gridView.setAdapter(productAdapter); + //initData(); + new SearchProductTask().execute(); } @@ -107,4 +111,27 @@ public class IndexFragment extends Fragment implements View.OnClickListener { productList.add(product5); } + + /** + * 发送网络请求获取数据 + */ + class SearchProductTask extends AsyncTask> { + + @Override + protected List doInBackground(Void... voids) { + OkHttpClientProduct clientProduct = new OkHttpClientProduct(); + try { + list = clientProduct.getProductPack(); + } catch (IOException e) { + e.printStackTrace(); + } + return list; + } + + @Override + protected void onPostExecute(List orangeProducts) { + productAdapter = new ProductAdapter(getActivity(), list); + gridView.setAdapter(productAdapter); + } + } } diff --git a/chapter06_net/app/src/main/java/com/orangesale/cn/fragment/PearsonFragment.java b/app/src/main/java/com/orangesale/cn/fragment/PearsonFragment.java similarity index 100% rename from chapter06_net/app/src/main/java/com/orangesale/cn/fragment/PearsonFragment.java rename to app/src/main/java/com/orangesale/cn/fragment/PearsonFragment.java diff --git a/chapter06_net/app/src/main/java/com/orangesale/cn/fragment/ProductFragment.java b/app/src/main/java/com/orangesale/cn/fragment/ProductFragment.java similarity index 59% rename from chapter06_net/app/src/main/java/com/orangesale/cn/fragment/ProductFragment.java rename to app/src/main/java/com/orangesale/cn/fragment/ProductFragment.java index 807dcac..c63079e 100644 --- a/chapter06_net/app/src/main/java/com/orangesale/cn/fragment/ProductFragment.java +++ b/app/src/main/java/com/orangesale/cn/fragment/ProductFragment.java @@ -1,6 +1,7 @@ package com.orangesale.cn.fragment; import android.app.Fragment; +import android.os.AsyncTask; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -15,9 +16,10 @@ import com.orangesale.cn.R; import com.orangesale.cn.adapter.ListViewAdapter; import com.orangesale.cn.adapter.ProductAdapter; import com.orangesale.cn.entity.Condition; -import com.orangesale.cn.entity.Product; +import com.orangesale.cn.entity.OrangeProductPack; +import com.orangesale.cn.netrequest.OkHttpClientProduct; -import java.math.BigDecimal; +import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -26,7 +28,7 @@ public class ProductFragment extends Fragment { private ListViewAdapter listViewAdapter; private List conditionList; private GridView productGridView; - private List productList; + private List orangeProductList = new ArrayList<>(); @Nullable @Override @@ -47,9 +49,7 @@ public class ProductFragment extends Fragment { listViewAdapter = new ListViewAdapter(getActivity(), conditionList); conditonListSpinner.setAdapter(listViewAdapter); productGridView = view.findViewById(R.id.product_list); - initData(); - ProductAdapter productAdapter = new ProductAdapter(getActivity(), productList); - productGridView.setAdapter(productAdapter); + new SearchProductTask().execute(); } /** @@ -76,41 +76,26 @@ public class ProductFragment extends Fragment { } /** - * 初始化商品数据 + * 发送网络请求获取数据 */ - private void initData() { - productList = new ArrayList<>(); - Product product = new Product(); - product.setImageUrlId(R.drawable.juzip); - product.setProductName("橘子"); - product.setProductPrice(new BigDecimal("9.9")); - Product product1 = new Product(); - product1.setImageUrlId(R.drawable.orange); - product1.setProductName("橙子"); - product1.setProductPrice(new BigDecimal("29.9")); - Product product2 = new Product(); - product2.setImageUrlId(R.drawable.youzip); - product2.setProductName("柚子"); - product2.setProductPrice(new BigDecimal("19.9")); - Product product3 = new Product(); - product3.setImageUrlId(R.drawable.xiguap); - product3.setProductName("西瓜"); - product3.setProductPrice(new BigDecimal("19.9")); - Product product4 = new Product(); - product4.setImageUrlId(R.drawable.applep); - product4.setProductName("苹果"); - product4.setProductPrice(new BigDecimal("49.9")); - Product product5 = new Product(); - product5.setImageUrlId(R.drawable.lemonp); - product5.setProductName("柠檬"); - product5.setProductPrice(new BigDecimal("9.9")); - productList.add(product); - productList.add(product1); - productList.add(product2); - productList.add(product3); - productList.add(product4); - productList.add(product5); + class SearchProductTask extends AsyncTask> { + @Override + protected List doInBackground(Void... voids) { + OkHttpClientProduct clientProduct = new OkHttpClientProduct(); + try { + orangeProductList = clientProduct.getProductPack(); + } catch (IOException e) { + e.printStackTrace(); + } + return orangeProductList; + } + + @Override + protected void onPostExecute(List orangeProducts) { + ProductAdapter productAdapter = new ProductAdapter(getActivity(), orangeProductList); + productGridView.setAdapter(productAdapter); + } } diff --git a/chapter03_fragment/app/src/main/java/com/orangesale/cn/fragment/SetDetailFragment.java b/app/src/main/java/com/orangesale/cn/fragment/SetDetailFragment.java similarity index 100% rename from chapter03_fragment/app/src/main/java/com/orangesale/cn/fragment/SetDetailFragment.java rename to app/src/main/java/com/orangesale/cn/fragment/SetDetailFragment.java diff --git a/chapter06_net/app/src/main/java/com/orangesale/cn/fragment/ShoppingCartFragment.java b/app/src/main/java/com/orangesale/cn/fragment/ShoppingCartFragment.java similarity index 100% rename from chapter06_net/app/src/main/java/com/orangesale/cn/fragment/ShoppingCartFragment.java rename to app/src/main/java/com/orangesale/cn/fragment/ShoppingCartFragment.java diff --git a/app/src/main/java/com/orangesale/cn/netrequest/OkHttpClientProduct.java b/app/src/main/java/com/orangesale/cn/netrequest/OkHttpClientProduct.java new file mode 100644 index 0000000..f1f5082 --- /dev/null +++ b/app/src/main/java/com/orangesale/cn/netrequest/OkHttpClientProduct.java @@ -0,0 +1,80 @@ +package com.orangesale.cn.netrequest; + +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.orangesale.cn.entity.OrangeProduct; +import com.orangesale.cn.entity.OrangeProductPack; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; + +public class OkHttpClientProduct { + + /** + * 查询商品信息 + * + * @return + */ + public List getProduct() throws IOException { + OkHttpClient okHttpClient = new OkHttpClient(); + Request request = new Request.Builder() + .url("http://172.16.40.55:8081/orange/product/search") + .build(); + Response response = okHttpClient.newCall(request).execute(); + JSONObject jsonObject = JSON.parseObject(Objects.requireNonNull(response.body()).string()); + List list = JSON.parseObject(jsonObject.getString("data"), new TypeReference>() { + }); + return list; + } + + /** + * 获取图片 + * + * @param imgUrl + * @return + * @throws IOException + */ + public Bitmap getImageBitMap(String imgUrl) throws IOException { + Bitmap bitmap; + OkHttpClient okHttpClient = new OkHttpClient(); + Request request = new Request.Builder() + .url(imgUrl) + .build(); + Response response = okHttpClient.newCall(request).execute(); + byte[] bytes = Objects.requireNonNull(response.body()).bytes(); + bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); + return bitmap; + + } + + /** + * 封装信息 + * + * @return + * @throws IOException + */ + + public List getProductPack() throws IOException { + List packList = new ArrayList<>(); + List list = getProduct(); + for (OrangeProduct orangeProduct : list) { + OrangeProductPack orangeProductPack = new OrangeProductPack(); + orangeProductPack.setId(orangeProduct.getId()); + orangeProductPack.setImgBitmap(getImageBitMap(orangeProduct.getImgUrl())); + orangeProductPack.setAddTime(orangeProduct.getAddTime()); + orangeProductPack.setPrice(orangeProduct.getPrice()); + packList.add(orangeProductPack); + } + return packList; + } +} diff --git a/app/src/main/java/com/orangesale/cn/netrequest/OkHttpMessage.java b/app/src/main/java/com/orangesale/cn/netrequest/OkHttpMessage.java new file mode 100644 index 0000000..d61f9a2 --- /dev/null +++ b/app/src/main/java/com/orangesale/cn/netrequest/OkHttpMessage.java @@ -0,0 +1,39 @@ +package com.orangesale.cn.netrequest; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.orangesale.cn.entity.OrangeMessage; + +import java.io.IOException; +import java.util.Objects; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; + +public class OkHttpMessage { + + /** + * 消费消息 + * + * @return + */ + public OrangeMessage consumeMessage() throws IOException { + OkHttpClient okHttpClient = new OkHttpClient(); + Request request = new Request.Builder() + .url("http://172.16.40.55:8081/orange/message/consumeMessage") + .build(); + Response response = okHttpClient.newCall(request).execute(); + JSONObject jsonObject = JSON.parseObject(Objects.requireNonNull(response.body()).string()); + OrangeMessage orangeMessage = JSON.toJavaObject(jsonObject.getJSONObject("data"), OrangeMessage.class); + /** + * 消费完消息以后,设置消息为已读 + */ + Request request1 = new Request.Builder() + .url("http://172.16.40.55:8081/orange/message/updateMessage") + .build(); + okHttpClient.newCall(request1).execute(); + return orangeMessage; + } + +} diff --git a/app/src/main/java/com/orangesale/cn/netrequest/OkHttpUser.java b/app/src/main/java/com/orangesale/cn/netrequest/OkHttpUser.java new file mode 100644 index 0000000..0fb067b --- /dev/null +++ b/app/src/main/java/com/orangesale/cn/netrequest/OkHttpUser.java @@ -0,0 +1,67 @@ +package com.orangesale.cn.netrequest; + +import android.util.Log; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.orangesale.cn.entity.OrangeUser; + +import java.io.IOException; + +import okhttp3.MediaType; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; + +public class OkHttpUser { + + /** + * 用户登录验证 + * + * @param orangeUser + */ + public OrangeUser userLogin(OrangeUser orangeUser) throws IOException { + OkHttpClient okHttpClient = new OkHttpClient(); + //数据类型为json格式 + MediaType mediaType = MediaType.parse("application/json; charset=utf-8"); + //将对象转为JSON字符串 + String jsonStr = JSONObject.toJSONString(orangeUser); + RequestBody requestBody = RequestBody.create(jsonStr, mediaType); + Request request = new Request.Builder() + .url("http://172.16.40.55:8081/orange/user/login") + .post(requestBody) + .build(); + Response response = okHttpClient.newCall(request).execute(); + JSONObject jsonObject = JSON.parseObject(response.body().string()); + JSONObject jsonObject1 = jsonObject.getJSONObject("data"); + OrangeUser orangeUser1 = JSON.toJavaObject(jsonObject1, OrangeUser.class); + return orangeUser1; + } + + /** + * 用户注册 + * + * @param orangeUser + * @return + * @throws IOException + */ + public boolean userRegister(OrangeUser orangeUser) throws IOException { + OkHttpClient okHttpClient = new OkHttpClient(); + //数据类型为json格式 + MediaType mediaType = MediaType.parse("application/json; charset=utf-8"); + //将对象转为JSON字符串 + String jsonStr = JSONObject.toJSONString(orangeUser); + RequestBody requestBody = RequestBody.create(jsonStr, mediaType); + Request request = new Request.Builder() + .url("http://172.16.40.55:8081/orange/user/register") + .post(requestBody) + .build(); + Response response = okHttpClient.newCall(request).execute(); + JSONObject jsonObject = JSON.parseObject(response.body().string()); + Log.i("register", "userRegister: "+jsonObject); + return jsonObject.getBoolean("flag"); + } + + +} diff --git a/app/src/main/java/com/orangesale/cn/service/TimeService.java b/app/src/main/java/com/orangesale/cn/service/TimeService.java new file mode 100644 index 0000000..cac57df --- /dev/null +++ b/app/src/main/java/com/orangesale/cn/service/TimeService.java @@ -0,0 +1,105 @@ +package com.orangesale.cn.service; + +import android.app.Notification; +import android.app.NotificationChannel; +import android.app.NotificationManager; +import android.app.Service; +import android.content.Context; +import android.content.Intent; +import android.os.AsyncTask; +import android.os.IBinder; +import android.util.Log; + +import androidx.annotation.Nullable; +import androidx.core.app.NotificationCompat; + +import com.orangesale.cn.R; +import com.orangesale.cn.entity.OrangeMessage; +import com.orangesale.cn.netrequest.OkHttpMessage; + +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Objects; +import java.util.Timer; +import java.util.TimerTask; + +public class TimeService extends Service { + private static Timer timer = null; + private NotificationManager manager; + private NotificationCompat.Builder builder; + + @Nullable + @Override + public IBinder onBind(Intent intent) { + return null; + } + + /** + * 清除通知 + */ + private void cleanAllNotification() { + manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); + manager.cancelAll(); + if (timer != null) { + timer.cancel(); + timer = null; + } + + } + + /** + * 添加通知 + */ + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + long period = 60 * 1000; //1分钟一个周期 + if (timer == null) { + timer = new Timer(); + } + timer.schedule(new TimerTask() { + @Override + public void run() { + new ConsumeMessageTask().execute(); + } + }, 0, period); + + return super.onStartCommand(intent, flags, startId); + } + + class ConsumeMessageTask extends AsyncTask { + @Override + protected Void doInBackground(Void... voids) { + /** + * NotificationChannel是android8.0新增的特性,如果App的targetSDKVersion>=26, + * 没有设置channel通知渠道的话,就会导致通知无法展示。 + * 报错内容:Failed to post notification on channel “null” + */ + OkHttpMessage okHttpMessage = new OkHttpMessage(); + OrangeMessage orangeMessage; + try { + orangeMessage = okHttpMessage.consumeMessage(); + if (!Objects.isNull(orangeMessage)) { + Log.i("orangeMessage", "run: " + orangeMessage.toString()); + NotificationChannel channel = new NotificationChannel("channel", "通知", NotificationManager.IMPORTANCE_DEFAULT); + manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); + manager.createNotificationChannel(channel); + builder = new NotificationCompat.Builder(TimeService.this); + Date date = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + builder.setContentTitle("来自橙一色的系统通知消息" + " " + formatter.format(date)); + builder.setSmallIcon(R.drawable.chengzi); + builder.setChannelId("channel"); + builder.setContentText(orangeMessage.getContent()); + builder.setAutoCancel(true); + builder.setDefaults(Notification.DEFAULT_ALL); + Notification notification = builder.build(); + manager.notify(1, notification); + } + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + } +} diff --git a/chapter03_fragment/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable-v24/ic_launcher_foreground.xml rename to app/src/main/res/drawable-v24/ic_launcher_foreground.xml diff --git a/chapter03_fragment/app/src/main/res/drawable/address.png b/app/src/main/res/drawable/address.png similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable/address.png rename to app/src/main/res/drawable/address.png diff --git a/chapter06_net/app/src/main/res/drawable/all.png b/app/src/main/res/drawable/all.png similarity index 100% rename from chapter06_net/app/src/main/res/drawable/all.png rename to app/src/main/res/drawable/all.png diff --git a/chapter04_sqlite/app/src/main/res/drawable/apple.png b/app/src/main/res/drawable/apple.png old mode 100755 new mode 100644 similarity index 100% rename from chapter04_sqlite/app/src/main/res/drawable/apple.png rename to app/src/main/res/drawable/apple.png diff --git a/chapter04_sqlite/app/src/main/res/drawable/applep.png b/app/src/main/res/drawable/applep.png old mode 100755 new mode 100644 similarity index 100% rename from chapter04_sqlite/app/src/main/res/drawable/applep.png rename to app/src/main/res/drawable/applep.png diff --git a/chapter03_fragment/app/src/main/res/drawable/arrow_down.png b/app/src/main/res/drawable/arrow_down.png similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable/arrow_down.png rename to app/src/main/res/drawable/arrow_down.png diff --git a/chapter03_fragment/app/src/main/res/drawable/arrow_left.png b/app/src/main/res/drawable/arrow_left.png similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable/arrow_left.png rename to app/src/main/res/drawable/arrow_left.png diff --git a/chapter03_fragment/app/src/main/res/drawable/arrow_right.png b/app/src/main/res/drawable/arrow_right.png similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable/arrow_right.png rename to app/src/main/res/drawable/arrow_right.png diff --git a/chapter03_fragment/app/src/main/res/drawable/button_login.xml b/app/src/main/res/drawable/button_login.xml similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable/button_login.xml rename to app/src/main/res/drawable/button_login.xml diff --git a/chapter03_fragment/app/src/main/res/drawable/button_register.xml b/app/src/main/res/drawable/button_register.xml similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable/button_register.xml rename to app/src/main/res/drawable/button_register.xml diff --git a/chapter06_net/app/src/main/res/drawable/cart.png b/app/src/main/res/drawable/cart.png similarity index 100% rename from chapter06_net/app/src/main/res/drawable/cart.png rename to app/src/main/res/drawable/cart.png diff --git a/chapter03_fragment/app/src/main/res/drawable/chengzi.png b/app/src/main/res/drawable/chengzi.png similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable/chengzi.png rename to app/src/main/res/drawable/chengzi.png diff --git a/chapter03_fragment/app/src/main/res/drawable/city.png b/app/src/main/res/drawable/city.png similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable/city.png rename to app/src/main/res/drawable/city.png diff --git a/chapter03_fragment/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable/ic_launcher_background.xml rename to app/src/main/res/drawable/ic_launcher_background.xml diff --git a/chapter04_sqlite/app/src/main/res/drawable/index.png b/app/src/main/res/drawable/index.png old mode 100755 new mode 100644 similarity index 100% rename from chapter04_sqlite/app/src/main/res/drawable/index.png rename to app/src/main/res/drawable/index.png diff --git a/chapter06_net/app/src/main/res/drawable/index_menu.xml b/app/src/main/res/drawable/index_menu.xml similarity index 100% rename from chapter06_net/app/src/main/res/drawable/index_menu.xml rename to app/src/main/res/drawable/index_menu.xml diff --git a/chapter03_fragment/app/src/main/res/drawable/juzi.png b/app/src/main/res/drawable/juzi.png similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable/juzi.png rename to app/src/main/res/drawable/juzi.png diff --git a/chapter04_sqlite/app/src/main/res/drawable/juzip.png b/app/src/main/res/drawable/juzip.png old mode 100755 new mode 100644 similarity index 100% rename from chapter04_sqlite/app/src/main/res/drawable/juzip.png rename to app/src/main/res/drawable/juzip.png diff --git a/chapter04_sqlite/app/src/main/res/drawable/lemon.png b/app/src/main/res/drawable/lemon.png old mode 100755 new mode 100644 similarity index 100% rename from chapter04_sqlite/app/src/main/res/drawable/lemon.png rename to app/src/main/res/drawable/lemon.png diff --git a/chapter04_sqlite/app/src/main/res/drawable/lemonp.png b/app/src/main/res/drawable/lemonp.png old mode 100755 new mode 100644 similarity index 100% rename from chapter04_sqlite/app/src/main/res/drawable/lemonp.png rename to app/src/main/res/drawable/lemonp.png diff --git a/chapter04_sqlite/app/src/main/res/drawable/li.png b/app/src/main/res/drawable/li.png old mode 100755 new mode 100644 similarity index 100% rename from chapter04_sqlite/app/src/main/res/drawable/li.png rename to app/src/main/res/drawable/li.png diff --git a/chapter04_sqlite/app/src/main/res/drawable/mangguo.png b/app/src/main/res/drawable/mangguo.png old mode 100755 new mode 100644 similarity index 100% rename from chapter04_sqlite/app/src/main/res/drawable/mangguo.png rename to app/src/main/res/drawable/mangguo.png diff --git a/chapter03_fragment/app/src/main/res/drawable/orange.png b/app/src/main/res/drawable/orange.png similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable/orange.png rename to app/src/main/res/drawable/orange.png diff --git a/chapter03_fragment/app/src/main/res/drawable/password.png b/app/src/main/res/drawable/password.png similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable/password.png rename to app/src/main/res/drawable/password.png diff --git a/chapter04_sqlite/app/src/main/res/drawable/pearson.png b/app/src/main/res/drawable/pearson.png old mode 100755 new mode 100644 similarity index 100% rename from chapter04_sqlite/app/src/main/res/drawable/pearson.png rename to app/src/main/res/drawable/pearson.png diff --git a/chapter06_net/app/src/main/res/drawable/price.png b/app/src/main/res/drawable/price.png similarity index 100% rename from chapter06_net/app/src/main/res/drawable/price.png rename to app/src/main/res/drawable/price.png diff --git a/chapter04_sqlite/app/src/main/res/drawable/product.png b/app/src/main/res/drawable/product.png old mode 100755 new mode 100644 similarity index 100% rename from chapter04_sqlite/app/src/main/res/drawable/product.png rename to app/src/main/res/drawable/product.png diff --git a/chapter06_net/app/src/main/res/drawable/salenum.png b/app/src/main/res/drawable/salenum.png similarity index 100% rename from chapter06_net/app/src/main/res/drawable/salenum.png rename to app/src/main/res/drawable/salenum.png diff --git a/chapter03_fragment/app/src/main/res/drawable/search.png b/app/src/main/res/drawable/search.png similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable/search.png rename to app/src/main/res/drawable/search.png diff --git a/chapter03_fragment/app/src/main/res/drawable/setting.png b/app/src/main/res/drawable/setting.png similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable/setting.png rename to app/src/main/res/drawable/setting.png diff --git a/chapter03_fragment/app/src/main/res/drawable/sex.png b/app/src/main/res/drawable/sex.png similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable/sex.png rename to app/src/main/res/drawable/sex.png diff --git a/chapter04_sqlite/app/src/main/res/drawable/shoppingcart.png b/app/src/main/res/drawable/shoppingcart.png old mode 100755 new mode 100644 similarity index 100% rename from chapter04_sqlite/app/src/main/res/drawable/shoppingcart.png rename to app/src/main/res/drawable/shoppingcart.png diff --git a/chapter04_sqlite/app/src/main/res/drawable/shuiguo.png b/app/src/main/res/drawable/shuiguo.png old mode 100755 new mode 100644 similarity index 100% rename from chapter04_sqlite/app/src/main/res/drawable/shuiguo.png rename to app/src/main/res/drawable/shuiguo.png diff --git a/chapter03_fragment/app/src/main/res/drawable/spinner_drop_down_shape.xml b/app/src/main/res/drawable/spinner_drop_down_shape.xml similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable/spinner_drop_down_shape.xml rename to app/src/main/res/drawable/spinner_drop_down_shape.xml diff --git a/chapter03_fragment/app/src/main/res/drawable/sure_apssword.png b/app/src/main/res/drawable/sure_apssword.png similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable/sure_apssword.png rename to app/src/main/res/drawable/sure_apssword.png diff --git a/chapter06_net/app/src/main/res/drawable/tab_menu_text.xml b/app/src/main/res/drawable/tab_menu_text.xml similarity index 100% rename from chapter06_net/app/src/main/res/drawable/tab_menu_text.xml rename to app/src/main/res/drawable/tab_menu_text.xml diff --git a/chapter06_net/app/src/main/res/drawable/time.png b/app/src/main/res/drawable/time.png similarity index 100% rename from chapter06_net/app/src/main/res/drawable/time.png rename to app/src/main/res/drawable/time.png diff --git a/chapter03_fragment/app/src/main/res/drawable/user.png b/app/src/main/res/drawable/user.png similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable/user.png rename to app/src/main/res/drawable/user.png diff --git a/chapter03_fragment/app/src/main/res/drawable/user_account.png b/app/src/main/res/drawable/user_account.png similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable/user_account.png rename to app/src/main/res/drawable/user_account.png diff --git a/chapter03_fragment/app/src/main/res/drawable/user_general.png b/app/src/main/res/drawable/user_general.png similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable/user_general.png rename to app/src/main/res/drawable/user_general.png diff --git a/chapter03_fragment/app/src/main/res/drawable/user_icon.png b/app/src/main/res/drawable/user_icon.png similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable/user_icon.png rename to app/src/main/res/drawable/user_icon.png diff --git a/chapter03_fragment/app/src/main/res/drawable/user_pay.png b/app/src/main/res/drawable/user_pay.png similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable/user_pay.png rename to app/src/main/res/drawable/user_pay.png diff --git a/chapter03_fragment/app/src/main/res/drawable/user_sex.png b/app/src/main/res/drawable/user_sex.png similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable/user_sex.png rename to app/src/main/res/drawable/user_sex.png diff --git a/chapter04_sqlite/app/src/main/res/drawable/xigua.png b/app/src/main/res/drawable/xigua.png old mode 100755 new mode 100644 similarity index 100% rename from chapter04_sqlite/app/src/main/res/drawable/xigua.png rename to app/src/main/res/drawable/xigua.png diff --git a/chapter04_sqlite/app/src/main/res/drawable/xiguap.png b/app/src/main/res/drawable/xiguap.png old mode 100755 new mode 100644 similarity index 100% rename from chapter04_sqlite/app/src/main/res/drawable/xiguap.png rename to app/src/main/res/drawable/xiguap.png diff --git a/chapter03_fragment/app/src/main/res/drawable/youzi.png b/app/src/main/res/drawable/youzi.png similarity index 100% rename from chapter03_fragment/app/src/main/res/drawable/youzi.png rename to app/src/main/res/drawable/youzi.png diff --git a/chapter04_sqlite/app/src/main/res/drawable/youzip.png b/app/src/main/res/drawable/youzip.png old mode 100755 new mode 100644 similarity index 100% rename from chapter04_sqlite/app/src/main/res/drawable/youzip.png rename to app/src/main/res/drawable/youzip.png diff --git a/chapter06_net/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml similarity index 100% rename from chapter06_net/app/src/main/res/layout/activity_main.xml rename to app/src/main/res/layout/activity_main.xml diff --git a/chapter06_net/app/src/main/res/layout/cart_have_product.xml b/app/src/main/res/layout/cart_have_product.xml similarity index 100% rename from chapter06_net/app/src/main/res/layout/cart_have_product.xml rename to app/src/main/res/layout/cart_have_product.xml diff --git a/chapter06_net/app/src/main/res/layout/cart_no_product.xml b/app/src/main/res/layout/cart_no_product.xml similarity index 100% rename from chapter06_net/app/src/main/res/layout/cart_no_product.xml rename to app/src/main/res/layout/cart_no_product.xml diff --git a/chapter03_fragment/app/src/main/res/layout/category_detail.xml b/app/src/main/res/layout/category_detail.xml similarity index 100% rename from chapter03_fragment/app/src/main/res/layout/category_detail.xml rename to app/src/main/res/layout/category_detail.xml diff --git a/chapter03_fragment/app/src/main/res/layout/category_list_item.xml b/app/src/main/res/layout/category_list_item.xml similarity index 100% rename from chapter03_fragment/app/src/main/res/layout/category_list_item.xml rename to app/src/main/res/layout/category_list_item.xml diff --git a/chapter06_net/app/src/main/res/layout/categoty_detail_content.xml b/app/src/main/res/layout/categoty_detail_content.xml similarity index 90% rename from chapter06_net/app/src/main/res/layout/categoty_detail_content.xml rename to app/src/main/res/layout/categoty_detail_content.xml index 2b3a24f..33a4e8d 100644 --- a/chapter06_net/app/src/main/res/layout/categoty_detail_content.xml +++ b/app/src/main/res/layout/categoty_detail_content.xml @@ -6,9 +6,9 @@ android:orientation="vertical"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/chapter03_fragment/app/build.gradle b/chapter03_fragment/app/build.gradle deleted file mode 100644 index 3b8a747..0000000 --- a/chapter03_fragment/app/build.gradle +++ /dev/null @@ -1,34 +0,0 @@ -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/chapter03_fragment/app/src/main/AndroidManifest.xml b/chapter03_fragment/app/src/main/AndroidManifest.xml deleted file mode 100644 index e9dc395..0000000 --- a/chapter03_fragment/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/chapter03_fragment/app/src/main/java/com/orangesale/cn/MainActivity.java b/chapter03_fragment/app/src/main/java/com/orangesale/cn/MainActivity.java deleted file mode 100644 index 9083867..0000000 --- a/chapter03_fragment/app/src/main/java/com/orangesale/cn/MainActivity.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.orangesale.cn; - -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.orangesale.cn.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/chapter03_fragment/app/src/main/java/com/orangesale/cn/activity/CategoryActivity.java b/chapter03_fragment/app/src/main/java/com/orangesale/cn/activity/CategoryActivity.java deleted file mode 100644 index 60f3cc6..0000000 --- a/chapter03_fragment/app/src/main/java/com/orangesale/cn/activity/CategoryActivity.java +++ /dev/null @@ -1,90 +0,0 @@ -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.juzi); - product.setProductName("橘子"); - product.setProductPrice(new BigDecimal("9.9")); - Product product1 = new Product(); - product1.setImageUrlId(R.drawable.chengzi); - product1.setProductName("橙子"); - product1.setProductPrice(new BigDecimal("29.9")); - Product product2 = new Product(); - product2.setImageUrlId(R.drawable.youzi); - product2.setProductName("柚子"); - product2.setProductPrice(new BigDecimal("19.9")); - 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/chapter03_fragment/app/src/main/java/com/orangesale/cn/activity/RegisterActivity.java b/chapter03_fragment/app/src/main/java/com/orangesale/cn/activity/RegisterActivity.java deleted file mode 100644 index c2d35bd..0000000 --- a/chapter03_fragment/app/src/main/java/com/orangesale/cn/activity/RegisterActivity.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.orangesale.cn.activity; - -import android.content.Intent; -import android.graphics.Color; -import android.os.Bundle; -import android.view.View; -import android.widget.Button; -import android.widget.EditText; -import android.widget.RadioGroup; -import android.widget.TextView; -import android.widget.Toast; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - -import com.lljjcoder.citypickerview.widget.CityPicker; -import com.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); - 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/chapter03_fragment/app/src/main/java/com/orangesale/cn/activity/UserActivity.java b/chapter03_fragment/app/src/main/java/com/orangesale/cn/activity/UserActivity.java deleted file mode 100644 index 8160243..0000000 --- a/chapter03_fragment/app/src/main/java/com/orangesale/cn/activity/UserActivity.java +++ /dev/null @@ -1,67 +0,0 @@ -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.MainActivity; -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); - break; - } - } -} diff --git a/chapter03_fragment/app/src/main/java/com/orangesale/cn/entity/Product.java b/chapter03_fragment/app/src/main/java/com/orangesale/cn/entity/Product.java deleted file mode 100644 index 79c6526..0000000 --- a/chapter03_fragment/app/src/main/java/com/orangesale/cn/entity/Product.java +++ /dev/null @@ -1,34 +0,0 @@ -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 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/chapter03_fragment/app/src/main/res/layout/activity_main.xml b/chapter03_fragment/app/src/main/res/layout/activity_main.xml deleted file mode 100644 index 4fc2444..0000000 --- a/chapter03_fragment/app/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/chapter03_fragment/app/src/main/res/layout/categoty_detail_content.xml b/chapter03_fragment/app/src/main/res/layout/categoty_detail_content.xml deleted file mode 100644 index a46be2c..0000000 --- a/chapter03_fragment/app/src/main/res/layout/categoty_detail_content.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/chapter03_fragment/app/src/main/res/layout/content_category.xml b/chapter03_fragment/app/src/main/res/layout/content_category.xml deleted file mode 100644 index 440633f..0000000 --- a/chapter03_fragment/app/src/main/res/layout/content_category.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/chapter03_fragment/app/src/main/res/layout/content_user.xml b/chapter03_fragment/app/src/main/res/layout/content_user.xml deleted file mode 100644 index fa429d8..0000000 --- a/chapter03_fragment/app/src/main/res/layout/content_user.xml +++ /dev/null @@ -1,234 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -