Compare commits
No commits in common. 'master' and 'lastcode' have entirely different histories.
@ -0,0 +1,27 @@
|
||||
package com.example.orangesale_end;
|
||||
|
||||
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 <a href="http://d.android.com/tools/testing">Testing documentation</a>
|
||||
*/
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class ExampleInstrumentedTest {
|
||||
@Test
|
||||
public void useAppContext() {
|
||||
// Context of the app under test.
|
||||
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
|
||||
|
||||
assertEquals("com.example.orangesale_end", appContext.getPackageName());
|
||||
}
|
||||
}
|
@ -0,0 +1,92 @@
|
||||
package com.example.orangesale_end;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.Looper;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import com.example.orangesale_end.activity.IndexActivity;
|
||||
import com.example.orangesale_end.activity.RegisterActivity;
|
||||
import com.example.orangesale_end.entity.OrangeUser;
|
||||
import com.example.orangesale_end.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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 登录验证
|
||||
*/
|
||||
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();
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
@ -0,0 +1,90 @@
|
||||
package com.example.orangesale_end.activity;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.FragmentManager;
|
||||
import android.app.FragmentTransaction;
|
||||
import android.os.Bundle;
|
||||
import android.widget.ListView;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.example.orangesale_end.R;
|
||||
import com.example.orangesale_end.adapter.Adapter;
|
||||
import com.example.orangesale_end.entity.Product;
|
||||
import com.example.orangesale_end.fragment.SetDetailFragment;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class CategoryActivity extends Activity {
|
||||
public OnChangeListener onchangedListener;
|
||||
private List<Product> productList;
|
||||
private List<String> 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.arrow_down);
|
||||
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.arrow_left);
|
||||
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);
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package com.example.orangesale_end.activity.holder;
|
||||
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.example.orangesale_end.R;
|
||||
|
||||
public class ViewHolder extends RecyclerView.ViewHolder
|
||||
{
|
||||
public TextView shproductid;
|
||||
public TextView shuserid;
|
||||
public ImageView imageView;
|
||||
public TextView shid;
|
||||
public TextView shproductnum;
|
||||
|
||||
public ViewHolder(@NonNull View itemView) {
|
||||
super(itemView);
|
||||
shid = itemView.findViewById(R.id.shid);
|
||||
shuserid=itemView.findViewById(R.id.userid);
|
||||
shproductnum=itemView.findViewById(R.id.shproductnum);
|
||||
imageView=itemView.findViewById(R.id.shoppingproductpicture);
|
||||
shproductid=itemView.findViewById(R.id.shproductid);
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,78 @@
|
||||
package com.example.orangesale_end.adapter;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.example.orangesale_end.R;
|
||||
import com.example.orangesale_end.entity.Condition;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ListViewAdapter extends BaseAdapter {
|
||||
private List<Condition> conditionList;
|
||||
private LayoutInflater layoutInflater;
|
||||
private int selectedPosition = -1;
|
||||
private int selectColor = Color.GRAY;
|
||||
|
||||
public ListViewAdapter(Context context, List<Condition> conditionList) {
|
||||
this.conditionList = conditionList;
|
||||
this.layoutInflater = LayoutInflater.from(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return conditionList.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getItem(int position) {
|
||||
return conditionList.get(position);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getItemId(int position) {
|
||||
return position;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
ViewHolder viewHolder;
|
||||
if (convertView == null) {
|
||||
convertView = layoutInflater.inflate(R.layout.product_condition_item, null);
|
||||
viewHolder = new ViewHolder();
|
||||
viewHolder.imageView = convertView.findViewById(R.id.condition_icon);
|
||||
viewHolder.jiange = convertView.findViewById(R.id.image_jiange);
|
||||
viewHolder.textView = convertView.findViewById(R.id.condition_name);
|
||||
viewHolder.linearLayout = convertView.findViewById(R.id.item_bg);
|
||||
convertView.setTag(viewHolder);
|
||||
} else {
|
||||
viewHolder = (ViewHolder) convertView.getTag();
|
||||
}
|
||||
Condition condition = conditionList.get(position);
|
||||
if (condition != null) {
|
||||
viewHolder.imageView.setBackgroundResource(condition.getConditionIcon());
|
||||
viewHolder.textView.setText(condition.getConditionName());
|
||||
viewHolder.jiange.setBackgroundColor(Color.rgb(207, 207, 207));
|
||||
if (selectedPosition == position) {
|
||||
viewHolder.linearLayout.setBackgroundColor(selectColor);
|
||||
}
|
||||
|
||||
}
|
||||
return convertView;
|
||||
}
|
||||
|
||||
class ViewHolder {
|
||||
ImageView imageView, jiange;
|
||||
TextView textView;
|
||||
LinearLayout linearLayout;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,84 @@
|
||||
package com.example.orangesale_end.adapter;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.example.orangesale_end.R;
|
||||
import com.example.orangesale_end.activity.holder.ViewHolder;
|
||||
import com.example.orangesale_end.entity.OrangeShoppingcart;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ShoppingcartAdapter extends RecyclerView.Adapter<ViewHolder> {
|
||||
private Context context;
|
||||
private List <OrangeShoppingcart> orangeShoppingcarts;
|
||||
|
||||
public ShoppingcartAdapter(List<OrangeShoppingcart> orangeShoppingcarts, Context context) {
|
||||
this.orangeShoppingcarts = orangeShoppingcarts;
|
||||
this.context=context;
|
||||
}
|
||||
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
View view=View.inflate(context,R.layout.item_review_shopping,null);
|
||||
ViewHolder viewHolder=new ViewHolder(view);
|
||||
return viewHolder;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
|
||||
OrangeShoppingcart orangeShoppingcart=orangeShoppingcarts.get(position);
|
||||
holder.imageView.setImageResource(orangeShoppingcart.getImgUrl());
|
||||
holder.shid.setText(String.valueOf(orangeShoppingcart.getId()));
|
||||
holder.shproductid.setText(String.valueOf(orangeShoppingcart.getProductId()));
|
||||
holder.shproductnum.setText(String.valueOf(orangeShoppingcart.getNum()));
|
||||
holder.shuserid.setText(String.valueOf(orangeShoppingcart.getUserId()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return orangeShoppingcarts.size();
|
||||
}
|
||||
|
||||
/* @Override
|
||||
public View getView(int i, View view, ViewGroup viewGroup) {
|
||||
|
||||
ViewHolder viewHolder;
|
||||
if (view==null)
|
||||
{
|
||||
view=LayoutInflater.from(context).inflate(R.layout.item_gridview_shopping,null);
|
||||
viewHolder=new ViewHolder();
|
||||
viewHolder.shproductid=view.findViewById(R.id.shproductid);
|
||||
viewHolder.shuserid=view.findViewById(R.id.userid);
|
||||
viewHolder.imageView=view.findViewById(R.id.shoppingproductpicture);
|
||||
viewHolder.shid=view.findViewById(R.id.shid);
|
||||
viewHolder.shproductnum=view.findViewById(R.id.shproductnum);
|
||||
view.setTag(viewHolder);
|
||||
}
|
||||
else {
|
||||
viewHolder = (ViewHolder)view.getTag();
|
||||
}
|
||||
OrangeShoppingcart orangeShoppingcart = orangeShoppingcarts.get(i);
|
||||
if (orangeShoppingcart!=null)
|
||||
{
|
||||
viewHolder.shuserid.setText(String.valueOf(orangeShoppingcart.getUserId()));
|
||||
viewHolder.shproductid.setText(String.valueOf(orangeShoppingcart.getProductId()));
|
||||
viewHolder.imageView.setImageResource(
|
||||
orangeShoppingcart.getImgUrl());
|
||||
viewHolder.shid.setText(String.valueOf(orangeShoppingcart.getId()));
|
||||
viewHolder.shproductnum.setText(String.valueOf(orangeShoppingcart.getNum()));
|
||||
|
||||
}
|
||||
|
||||
return view;
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package com.example.orangesale_end.entity;
|
||||
|
||||
public class Condition {
|
||||
private Integer conditionIcon;
|
||||
private String conditionName;
|
||||
|
||||
public Integer getConditionIcon() {
|
||||
return conditionIcon;
|
||||
}
|
||||
|
||||
public void setConditionIcon(Integer conditionIcon) {
|
||||
this.conditionIcon = conditionIcon;
|
||||
}
|
||||
|
||||
public String getConditionName() {
|
||||
return conditionName;
|
||||
}
|
||||
|
||||
public void setConditionName(String conditionName) {
|
||||
this.conditionName = conditionName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Condition{" +
|
||||
"conditionIcon=" + conditionIcon +
|
||||
", conditionName='" + conditionName + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,52 @@
|
||||
package com.example.orangesale_end.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 + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,64 @@
|
||||
package com.example.orangesale_end.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;
|
||||
}
|
||||
}
|
@ -0,0 +1,66 @@
|
||||
package com.example.orangesale_end.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;
|
||||
}
|
||||
}
|
@ -0,0 +1,99 @@
|
||||
package com.example.orangesale_end.entity;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class OrangeShoppingcart implements Serializable {
|
||||
/**
|
||||
* 自增主键
|
||||
*
|
||||
* @mbg.generated
|
||||
*/
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 用户id
|
||||
*
|
||||
* @mbg.generated
|
||||
*/
|
||||
private String userId;
|
||||
|
||||
/**
|
||||
* 商品id
|
||||
*
|
||||
* @mbg.generated
|
||||
*/
|
||||
private String productId;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*
|
||||
* @mbg.generated
|
||||
*/
|
||||
private String num;
|
||||
private Integer imgUrl;
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public OrangeShoppingcart() {
|
||||
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setUserId(String userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public String getProductId() {
|
||||
return productId;
|
||||
}
|
||||
|
||||
public void setProductId(String productId) {
|
||||
this.productId = productId;
|
||||
}
|
||||
|
||||
public String getNum() {
|
||||
return num;
|
||||
}
|
||||
|
||||
public void setNum(String num) {
|
||||
this.num = num;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "OrangeShoppingcart{" +
|
||||
"id=" + id +
|
||||
", userId=" + userId +
|
||||
", productId=" + productId +
|
||||
", num=" + num +
|
||||
", imgUrl=" + imgUrl +
|
||||
'}';
|
||||
}
|
||||
|
||||
public OrangeShoppingcart(String id, String userId, String productId,String num, int imgUrl) {
|
||||
this.id = id;
|
||||
this.userId = userId;
|
||||
this.productId = productId;
|
||||
this.num = num;
|
||||
this.imgUrl = imgUrl;
|
||||
|
||||
}
|
||||
|
||||
public int getImgUrl() {
|
||||
return imgUrl;
|
||||
}
|
||||
|
||||
public void setImgUrl(int imgUrl) {
|
||||
this.imgUrl = imgUrl;
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.yemamacake.cn.entity;
|
||||
package com.example.orangesale_end.entity;
|
||||
|
||||
public class OrangeUser {
|
||||
private Integer id;
|
@ -0,0 +1,44 @@
|
||||
package com.example.orangesale_end.entity;
|
||||
|
||||
public class ShoppingCart {
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Integer getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setUserId(Integer userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public Integer getProductId() {
|
||||
return ProductId;
|
||||
}
|
||||
|
||||
public void setProductId(Integer productId) {
|
||||
ProductId = productId;
|
||||
}
|
||||
|
||||
public Integer getNumber() {
|
||||
return number;
|
||||
}
|
||||
|
||||
public void setNumber(Integer number) {
|
||||
this.number = number;
|
||||
}
|
||||
|
||||
private Integer id;
|
||||
private Integer userId;
|
||||
private Integer ProductId;
|
||||
/**
|
||||
* 购买数量
|
||||
*/
|
||||
private Integer number;
|
||||
}
|
@ -0,0 +1,102 @@
|
||||
package com.example.orangesale_end.fragment;
|
||||
|
||||
import android.app.Fragment;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.GridView;
|
||||
import android.widget.Spinner;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.example.orangesale_end.R;
|
||||
import com.example.orangesale_end.adapter.ListViewAdapter;
|
||||
import com.example.orangesale_end.adapter.ProductAdapter;
|
||||
import com.example.orangesale_end.entity.Condition;
|
||||
import com.example.orangesale_end.entity.OrangeProductPack;
|
||||
import com.example.orangesale_end.netrequest.OkHttpClientProduct;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ProductFragment extends Fragment {
|
||||
private Spinner conditonListSpinner;
|
||||
private ListViewAdapter listViewAdapter;
|
||||
private List<Condition> conditionList;
|
||||
private GridView productGridView;
|
||||
private List<OrangeProductPack> orangeProductList = new ArrayList<>();
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
View view = LayoutInflater.from(getActivity()).inflate(R.layout.content_product, container, false);
|
||||
init(view);
|
||||
return view;
|
||||
}
|
||||
|
||||
/**
|
||||
* 组件初始化方法
|
||||
*
|
||||
* @param view
|
||||
*/
|
||||
private void init(View view) {
|
||||
conditonListSpinner = view.findViewById(R.id.product_select_condition);
|
||||
initCondList();
|
||||
listViewAdapter = new ListViewAdapter(getActivity(), conditionList);
|
||||
conditonListSpinner.setAdapter(listViewAdapter);
|
||||
productGridView = view.findViewById(R.id.product_list);
|
||||
new SearchProductTask().execute();
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化conditionList
|
||||
*/
|
||||
private void initCondList() {
|
||||
conditionList = new ArrayList<>();
|
||||
Condition allCondition = new Condition();
|
||||
allCondition.setConditionIcon(R.drawable.all);
|
||||
allCondition.setConditionName("全部");
|
||||
Condition saleCondition = new Condition();
|
||||
saleCondition.setConditionIcon(R.drawable.salenum);
|
||||
saleCondition.setConditionName("按销量高低排序");
|
||||
Condition timeCondition = new Condition();
|
||||
timeCondition.setConditionIcon(R.drawable.time);
|
||||
timeCondition.setConditionName("按上市时间排序");
|
||||
Condition priceCondition = new Condition();
|
||||
priceCondition.setConditionIcon(R.drawable.price);
|
||||
priceCondition.setConditionName("按商品价格排序");
|
||||
conditionList.add(allCondition);
|
||||
conditionList.add(saleCondition);
|
||||
conditionList.add(timeCondition);
|
||||
conditionList.add(priceCondition);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送网络请求获取数据
|
||||
*/
|
||||
class SearchProductTask extends AsyncTask<Void, Void, List<OrangeProductPack>> {
|
||||
|
||||
@Override
|
||||
protected List<OrangeProductPack> doInBackground(Void... voids) {
|
||||
OkHttpClientProduct clientProduct = new OkHttpClientProduct();
|
||||
try {
|
||||
orangeProductList = clientProduct.getProductPack();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return orangeProductList;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(List<OrangeProductPack> orangeProducts) {
|
||||
ProductAdapter productAdapter = new ProductAdapter(getActivity(), orangeProductList);
|
||||
productGridView.setAdapter(productAdapter);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,84 @@
|
||||
package com.example.orangesale_end.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.example.orangesale_end.entity.OrangeProduct;
|
||||
import com.example.orangesale_end.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<OrangeProduct> getProduct() throws IOException {
|
||||
OkHttpClient okHttpClient = new OkHttpClient();
|
||||
Request request = new Request.Builder()
|
||||
<<<<<<< HEAD
|
||||
.url("http://106.55.41.135:8081/orange/product/search")
|
||||
=======
|
||||
.url("http://192.168.18.1:8081/orange/product/search")
|
||||
>>>>>>> 76999d0 (last)
|
||||
.build();
|
||||
Response response = okHttpClient.newCall(request).execute();
|
||||
JSONObject jsonObject = JSON.parseObject(Objects.requireNonNull(response.body()).string());
|
||||
List<OrangeProduct> list = JSON.parseObject(jsonObject.getString("data"), new TypeReference<List<OrangeProduct>>() {
|
||||
});
|
||||
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<OrangeProductPack> getProductPack() throws IOException {
|
||||
List<OrangeProductPack> packList = new ArrayList<>();
|
||||
List<OrangeProduct> 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;
|
||||
}
|
||||
}
|
@ -0,0 +1,79 @@
|
||||
package com.example.orangesale_end.netrequest;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.example.orangesale_end.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()
|
||||
<<<<<<< HEAD
|
||||
.url("http://106.55.41.135:8081/orange/user/login")
|
||||
=======
|
||||
.url("http://192.168.18.1:8081/orange/user/login")
|
||||
>>>>>>> 76999d0 (last)
|
||||
.post(requestBody)
|
||||
.build();
|
||||
|
||||
Response response = okHttpClient.newCall(request).execute();
|
||||
|
||||
String responseStr = response.body().string();
|
||||
System.out.println("responseStr = " + responseStr);
|
||||
JSONObject jsonObject = JSON.parseObject(responseStr);
|
||||
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()
|
||||
<<<<<<< HEAD
|
||||
.url("http://106.55.41.135:8081/orange/user/register")
|
||||
=======
|
||||
.url("http://192.168.18.1:8081/orange/user/register")
|
||||
>>>>>>> 76999d0 (last)
|
||||
.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");
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,65 @@
|
||||
package com.example.orangesale_end.util;
|
||||
|
||||
|
||||
/**
|
||||
* 常量
|
||||
* @author llw
|
||||
*/
|
||||
public class Constant {
|
||||
|
||||
public static final String CAR_JSON = "{ \"code\" : 200 ,\n" +
|
||||
" \"orderData\" : [\n" +
|
||||
" {\n" +
|
||||
"\n" +
|
||||
" \"productproduce\":\"活力早餐\",\n" +
|
||||
" \"cartlist\": [\n" +
|
||||
" {\n" +
|
||||
" \"id\": 1,\n" +
|
||||
" \"productproduce\": \"活力早餐\",\n" +
|
||||
" \"defaultPic\": \"https://tse2-mm.cn.bing.net/th/id/OIP-C.FKgYJy9NYrL4RZKo42VCIAHaE8?w=292&h=195&c=7&r=0&o=5&dpr=1.3&pid=1.7\",\n" +
|
||||
" \"productId\": 1,\n" +
|
||||
" \"productName\": \"纯奶吐司\",\n"+
|
||||
" \"price\": 10,\n" +
|
||||
" \"count\":1\n" +
|
||||
" },\n" +
|
||||
" {\n" +
|
||||
" \"id\": 2,\n" +
|
||||
" \"productproduce\": \"甜品慕斯\",\n" +
|
||||
" \"defaultPic\": \"https://img14.360buyimg.com/n0/jfs/t2971/15/167732091/93002/204c1016/574d9d9aNe4e6fa7a.jpg\",\n" +
|
||||
" \"productId\": 2,\n" +
|
||||
" \"productName\": \"草莓慕斯蛋糕\",\n"+
|
||||
" \"price\": 19.9,\n" +
|
||||
" \"count\": 1\n" +
|
||||
" }\n" +
|
||||
" ]\n" +
|
||||
" }\n" +
|
||||
" ,\n" +
|
||||
" {\n" +
|
||||
" \"productproduce\":\"中式传统糕点\",\n" +
|
||||
" \"cartlist\": [\n" +
|
||||
" {\n" +
|
||||
" \"id\": 1,\n" +
|
||||
" \"productp\": \"中式传统糕点\",\n" +
|
||||
" \"defaultPic\": \"https://img.alicdn.com/imgextra/i4/2208137990237/O1CN01ap4J4O1DcaTrhAIvA_!!2208137990237.jpg\",\n" +
|
||||
" \"productId\": 1,\n" +
|
||||
" \"productName\": \"桃酥\",\n" +
|
||||
" \"price\": 10.9,\n" +
|
||||
" \"count\":1\n" +
|
||||
" }\n" +
|
||||
" ]\n" +
|
||||
" }\n" +
|
||||
" ,\n" +
|
||||
" {\n" +
|
||||
" \"productproduce\":\"中式新糕点\",\n" +
|
||||
" \"cartlist\": [\n" +
|
||||
" {\n" +
|
||||
" \"id\": 1,\n" +
|
||||
" \"productproduce\":\"中式新糕点\",\n" +
|
||||
" \"defaultPic\": \"https://ts1.cn.mm.bing.net/th/id/R-C.528c10e20ecf8276a0d05363506924e1?rik=wzIkFM3Eu7TH6A&riu=http%3a%2f%2fimg.zcool.cn%2fcommunity%2f011f6258d54bc5a801219c77be307c.jpg%401280w_1l_2o_100sh.jpg&ehk=fM6ac87gUuwrvLINm7jeR804iZweyvlAWbbCi2%2bEknU%3d&risl=&pid=ImgRaw&r=0\",\n" +
|
||||
" \"productId\": 1,\n" +
|
||||
" \"productName\": \"冰皮绿豆糕\",\n" +
|
||||
" \"price\": 15.9,\n" +
|
||||
" \"count\":1\n" +
|
||||
" },\n" +
|
||||
"}";
|
||||
}
|
@ -1,75 +0,0 @@
|
||||
package com.yemamacake.cn.activity;
|
||||
|
||||
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.yemamacake.cn.R;
|
||||
import com.yemamacake.cn.database.MamacakeUser;
|
||||
|
||||
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();
|
||||
MamacakeUser mamacakeUser = new MamacakeUser(MainActivity.this);
|
||||
bundle.putString("username",usernameText.getText().toString());
|
||||
bundle = mamacakeUser.queryUserInfo(mamacakeUser.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();
|
||||
MamacakeUser mamacakeUser = new MamacakeUser(MainActivity.this);
|
||||
String password = paswdEdit.getText().toString();
|
||||
SQLiteDatabase sqLiteDatabase = mamacakeUser.getReadableDatabase();
|
||||
Cursor cursor = sqLiteDatabase.rawQuery("select * from cake_user where username=? and password=?", new String[]{username, password});
|
||||
if (cursor.getCount() > 0) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
package com.yemamacake.cn.database;
|
||||
|
||||
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 MamacakeUser extends SQLiteOpenHelper {
|
||||
public MamacakeUser(@Nullable Context context) {
|
||||
super(context, "yemamadatabase", null, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(SQLiteDatabase sqLiteDatabase) {
|
||||
String sql = "create table cake_user(id integer primary key autoincrement, username varchar(50), password varchar(50),sex varchar(10),city carchar(50))";
|
||||
sqLiteDatabase.execSQL(sql);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
|
||||
|
||||
}
|
||||
//插入操作
|
||||
public void insertUser(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("cake_user", null, contentValues);
|
||||
sqLiteDatabase.close();
|
||||
}
|
||||
public Bundle queryUserInfo(SQLiteDatabase sqLiteDatabase, Bundle bundle) {
|
||||
String username = bundle.getString("username");
|
||||
Cursor cursor = sqLiteDatabase.rawQuery("select * from cake_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;
|
||||
}
|
||||
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
package com.yemamacake.cn.fragment;
|
||||
|
||||
import android.app.Fragment;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.yemamacake.cn.R;
|
||||
|
||||
public class ProductFragment extends Fragment {
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
View view = LayoutInflater.from(getActivity()).inflate(R.layout.content_product, container, false);
|
||||
return view;
|
||||
}
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
package com.yemamacake.cn.fragment;
|
||||
|
||||
import android.app.Fragment;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.yemamacake.cn.R;
|
||||
|
||||
public class ShoppingCartFragment extends Fragment {
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
View view = LayoutInflater.from(getActivity()).inflate(R.layout.content_shopping, container, false);
|
||||
return view;
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 99 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 8.6 KiB |
After Width: | Height: | Size: 231 B |
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<stroke android:color="#000"
|
||||
android:width="0.5dp"/>
|
||||
</shape>
|
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<stroke android:color="#000"
|
||||
android:width="0.5dp"/>
|
||||
<corners android:topRightRadius="4dp"
|
||||
android:bottomRightRadius="4dp" />
|
||||
</shape>
|
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<stroke android:color="#000"
|
||||
android:width="0.5dp"/>
|
||||
<corners android:topLeftRadius="4dp"
|
||||
android:bottomLeftRadius="4dp" />
|
||||
</shape>
|
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<corners android:radius="20dp"/>
|
||||
<gradient
|
||||
android:startColor="#FF5C13"
|
||||
android:endColor="#FC7D0B"
|
||||
android:angle="90" />
|
||||
</shape>
|
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<corners android:radius="20dp"/>
|
||||
<gradient
|
||||
android:startColor="#FF5C13"
|
||||
android:endColor="#FC7D0B"
|
||||
android:angle="90" />
|
||||
</shape>
|
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 1.6 KiB |
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:pathData="M12,22.5c-5.79,0 -10.5,-4.71 -10.5,-10.5S6.21,1.5 12,1.5 22.5,6.21 22.5,12 17.79,22.5 12,22.5zM12,3c-4.963,0 -9,4.037 -9,9s4.037,9 9,9 9,-4.037 9,-9S16.963,3 12,3z"
|
||||
android:fillColor="#a9b7b7"/>
|
||||
</vector>
|
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#eb4f38"
|
||||
android:pathData="M12,1.546c-5.764,0 -10.454,4.69 -10.454,10.454 0,5.765 4.689,10.454 10.454,10.454S22.454,17.765 22.454,12C22.454,6.236 17.765,1.546 12,1.546zM17.044,10.276 L11.039,16.346c-0.001,0.001 -0.005,0.002 -0.006,0.005 -0.002,0.001 -0.002,0.005 -0.005,0.006 -0.048,0.046 -0.107,0.075 -0.163,0.107 -0.028,0.016 -0.05,0.04 -0.08,0.051 -0.09,0.036 -0.185,0.055 -0.28,0.055 -0.096,0 -0.193,-0.019 -0.284,-0.056 -0.03,-0.013 -0.054,-0.038 -0.082,-0.054 -0.056,-0.031 -0.113,-0.059 -0.161,-0.107 -0.001,-0.001 -0.002,-0.005 -0.004,-0.006 -0.001,-0.002 -0.005,-0.002 -0.006,-0.005l-2.954,-3.035c-0.289,-0.297 -0.282,-0.772 0.015,-1.061 0.297,-0.288 0.771,-0.283 1.061,0.015l2.42,2.487 5.467,-5.527c0.291,-0.295 0.767,-0.298 1.061,-0.006C17.333,9.506 17.335,9.981 17.044,10.276z" />
|
||||
</vector>
|
@ -0,0 +1,34 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportWidth="108"
|
||||
android:viewportHeight="108">
|
||||
<path
|
||||
android:fillType="evenOdd"
|
||||
android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z"
|
||||
android:strokeWidth="1"
|
||||
android:strokeColor="#00000000">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:endX="78.5885"
|
||||
android:endY="90.9159"
|
||||
android:startX="48.7653"
|
||||
android:startY="61.0927"
|
||||
android:type="linear">
|
||||
<item
|
||||
android:color="#44000000"
|
||||
android:offset="0.0" />
|
||||
<item
|
||||
android:color="#00000000"
|
||||
android:offset="1.0" />
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:fillColor="#FFFFFF"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z"
|
||||
android:strokeWidth="1"
|
||||
android:strokeColor="#00000000" />
|
||||
</vector>
|
After Width: | Height: | Size: 8.0 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.1 KiB |
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:color="#F0A732" android:state_selected="true" />
|
||||
<item android:color="#CFCFCF" />
|
||||
</selector>
|
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 536 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 9.3 KiB |
@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<include layout="@layout/shoppingcart_title" />
|
||||
<!--有商品时的布局-->
|
||||
<<<<<<< HEAD
|
||||
<GridView
|
||||
=======
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
>>>>>>> 76999d0 (last)
|
||||
android:id="@+id/cart_productList"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:numColumns="1" />
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
<Button
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/colorAccent"
|
||||
android:text="结算商品"
|
||||
android:id="@+id/jiesuan"
|
||||
/>
|
||||
>>>>>>> 76999d0 (last)
|
||||
</LinearLayout>
|
@ -0,0 +1,45 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="#F2F2F2"
|
||||
android:orientation="vertical">
|
||||
|
||||
<include layout="@layout/shoppingcart_title" />
|
||||
<!--无商品时的布局-->
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="160dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:src="@drawable/cart" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="10dp"
|
||||
android:text="Cart is Empty ~"
|
||||
android:textColor="#B5B5B5"
|
||||
android:textSize="20sp" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/random_search"
|
||||
android:layout_width="180dp"
|
||||
android:layout_height="50dp"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="25dp"
|
||||
android:background="@drawable/button_login"
|
||||
android:text="go shopping..."
|
||||
android:textColor="#fff"
|
||||
android:textSize="18sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="#fff"
|
||||
android:orientation="vertical">
|
||||
<ImageView
|
||||
android:id="@+id/category_product_image"
|
||||
android:layout_width="120dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_height="120dp"
|
||||
android:layout_gravity="center" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/category_product_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="30dp"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="2dp"
|
||||
android:textColor="#050505"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/category_product_price"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="30dp"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="2dp"
|
||||
android:gravity="center"
|
||||
android:textColor="#050505"
|
||||
android:textSize="16sp" />
|
||||
</LinearLayout>
|
@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
<!--标题-->
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="50dp"
|
||||
android:background="#EFB81C"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/category_return"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:src="@drawable/arrow_left" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="12dp"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:text="商品"
|
||||
android:layout_marginRight="40dp"
|
||||
android:textColor="#FFF"
|
||||
android:textSize="20sp" />
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/shid"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="商品序号"
|
||||
app:layout_constraintBaseline_toBaselineOf="@+id/shproductid"
|
||||
app:layout_constraintStart_toStartOf="@+id/shoppingproductpicture" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/shproductid"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="商品id"
|
||||
app:layout_constraintStart_toStartOf="@+id/shid"
|
||||
app:layout_constraintTop_toTopOf="@+id/shoppingproductpicture" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/userid"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="用户id"
|
||||
app:layout_constraintBaseline_toBaselineOf="@+id/shid"
|
||||
app:layout_constraintStart_toStartOf="@+id/shid" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/shoppingproductpicture"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintBottom_toTopOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/shproductnum"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="商品数量"
|
||||
app:layout_constraintBaseline_toBaselineOf="@+id/shid"
|
||||
app:layout_constraintStart_toStartOf="@+id/shid" />
|
||||
</LinearLayout>
|
@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/item_bg"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="60dp"
|
||||
android:background="#fff"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/condition_icon"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginLeft="10dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/condition_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:text="销量"
|
||||
android:textSize="18sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/image_jiange"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginLeft="2dp"
|
||||
android:layout_marginRight="2dp"
|
||||
android:background="#CFCFCF" />
|
||||
|
||||
</LinearLayout>
|
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="#F2F2F2"
|
||||
android:orientation="vertical">
|
||||
|
||||
<include layout="@layout/shoppingcart_title" />
|
||||
|
||||
<include layout="@layout/cart_no_product" />
|
||||
|
||||
</LinearLayout>
|
@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
<!--标题-->
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="50dp"
|
||||
android:background="#EFB81C"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/shopcart_return"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:src="@drawable/arrow_left" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="12dp"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:text="shopping cart"
|
||||
android:layout_marginRight="40dp"
|
||||
android:textColor="#FFF"
|
||||
android:textSize="20sp" />
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
@ -1,6 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<<<<<<< HEAD
|
||||
<color name="colorPrimary">#ffc0cb</color>
|
||||
<color name="colorPrimaryDark">#ffc0cb</color>
|
||||
<color name="colorAccent">#ffc0cb</color>
|
||||
=======
|
||||
<color name="colorPrimary">#008577</color>
|
||||
<color name="colorPrimaryDark">#00574B</color>
|
||||
<color name="colorAccent">#D81B60</color>
|
||||
>>>>>>> 76999d0 (last)
|
||||
</resources>
|
||||
|
@ -1,6 +1,15 @@
|
||||
<resources>
|
||||
<<<<<<< HEAD
|
||||
<string name="app_name">叶妈妈烘焙店</string>
|
||||
<string name="Username">用户名:</string>
|
||||
<string name="Password">密    码:</string>
|
||||
<<<<<<< HEAD
|
||||
<string name="introduce">只销售当日现做面包,新鲜看得到!</string>
|
||||
=======
|
||||
>>>>>>> 8d271bc (end_code)
|
||||
=======
|
||||
<string name="app_name">橙一色</string>
|
||||
<string name="Username">用户名:</string>
|
||||
<string name="Password">密    码:</string>
|
||||
>>>>>>> 76999d0 (last)
|
||||
</resources>
|
||||
|
@ -0,0 +1,17 @@
|
||||
package com.example.orangesale_end;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Example local unit test, which will execute on the development machine (host).
|
||||
*
|
||||
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
|
||||
*/
|
||||
public class ExampleUnitTest {
|
||||
@Test
|
||||
public void addition_isCorrect() {
|
||||
assertEquals(4, 2 + 2);
|
||||
}
|
||||
}
|
@ -1,6 +1,18 @@
|
||||
<<<<<<< HEAD
|
||||
<<<<<<< HEAD
|
||||
#Tue Mar 21 10:55:58 CST 2023
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
|
||||
=======
|
||||
#Wed Apr 26 17:34:52 CST 2023
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
|
||||
>>>>>>> 8d271bc (end_code)
|
||||
=======
|
||||
#Wed May 17 09:41:29 CST 2023
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
|
||||
>>>>>>> 76999d0 (last)
|
||||
distributionPath=wrapper/dists
|
||||
zipStorePath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
|
@ -1,2 +1,10 @@
|
||||
include ':app'
|
||||
<<<<<<< HEAD
|
||||
<<<<<<< HEAD
|
||||
rootProject.name='yemamacake'
|
||||
=======
|
||||
rootProject.name='OrangeSale_End'
|
||||
>>>>>>> 8d271bc (end_code)
|
||||
=======
|
||||
rootProject.name='OrangeSale_End'
|
||||
>>>>>>> 76999d0 (last)
|
||||
|