请根据上面的需求设计一种实现方案,并将实验步骤及首页、登录页、购物车页面的相关代码粘贴出来。
时间: 2024-02-09 13:08:09 浏览: 62
实现方案:
1. 首页采用RecyclerView展示商品列表,每个商品用一个自定义的ItemView进行展示;
2. 登录页采用单例模式进行设计;
3. 用户登录成功后,将用户名保存到SharedPreferences中,并在MainActivity中使用该用户名获取该用户的商品列表;
4. 购物车页面采用ListView展示购物车中的商品列表。
步骤:
1. 首先创建一个新的Android项目,命名为"ShoppingApp";
2. 在res/layout目录下,创建一个名为"item_goods.xml"的布局文件,用于展示商品列表的每一项。在该布局文件中添加ImageView、TextView、Button等UI控件,用于展示商品的图片、名称、价格和购买按钮;
3. 在MainActivity中,添加RecyclerView控件,并在onCreate()方法中初始化商品列表。同时,为RecyclerView设置一个Adapter,用于将商品列表中的数据绑定到RecyclerView中;
4. 创建LoginActivity,并在该页面中添加EditText、Button等UI控件,用于用户输入账号密码和登录。为了保证该页面在整个app中只有一个实例,可以使用单例模式进行设计;
5. 当用户在登录页面中输入了正确的账号密码并点击了登录按钮,可以将该用户的账号保存到SharedPreferences中,并且跳转回MainActivity页面。在MainActivity中使用该用户名获取该用户的商品列表,并且刷新RecyclerView;
6. 创建CartActivity,并在该页面中添加ListView控件,用于展示购物车中的商品列表。在跳转到该页面时,将购物车中的商品信息通过Intent进行传递,并在CartActivity中进行获取和展示。
MainActivity代码:
```java
public class MainActivity extends AppCompatActivity {
private RecyclerView mRecyclerView;
private GoodsAdapter mAdapter;
private List<GoodsModel> mGoodsList = new ArrayList<>();
private String mUsername;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取当前登录用户的用户名
SharedPreferences sp = getSharedPreferences("user_info", MODE_PRIVATE);
mUsername = sp.getString("username", "");
// 初始化商品列表
initGoodsList();
// 初始化RecyclerView
mRecyclerView = findViewById(R.id.recycler_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mAdapter = new GoodsAdapter(mGoodsList);
mRecyclerView.setAdapter(mAdapter);
}
// 初始化商品列表
private void initGoodsList() {
// 根据当前登录用户的用户名获取该用户的商品列表
if (mUsername.equals("anonymous")) {
// 匿名用户只能浏览商品
mGoodsList.add(new GoodsModel(R.drawable.goods1, "商品1", 10.0));
mGoodsList.add(new GoodsModel(R.drawable.goods2, "商品2", 20.0));
mGoodsList.add(new GoodsModel(R.drawable.goods3, "商品3", 30.0));
mGoodsList.add(new GoodsModel(R.drawable.goods4, "商品4", 40.0));
} else {
// 普通用户可以购买商品
mGoodsList.add(new GoodsModel(R.drawable.goods1, "商品1", 10.0, true));
mGoodsList.add(new GoodsModel(R.drawable.goods2, "商品2", 20.0, true));
mGoodsList.add(new GoodsModel(R.drawable.goods3, "商品3", 30.0, true));
mGoodsList.add(new GoodsModel(R.drawable.goods4, "商品4", 40.0, true));
}
}
}
```
LoginActivity代码:
```java
public class LoginActivity extends AppCompatActivity {
private EditText mEtUsername;
private EditText mEtPassword;
private Button mBtnLogin;
private static LoginActivity mInstance;
// 获取LoginActivity的单例对象
public static LoginActivity getInstance() {
if (mInstance == null) {
mInstance = new LoginActivity();
}
return mInstance;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
// 初始化UI控件
mEtUsername = findViewById(R.id.et_username);
mEtPassword = findViewById(R.id.et_password);
mBtnLogin = findViewById(R.id.btn_login);
// 设置登录按钮的点击事件
mBtnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 获取用户输入的账号和密码
String username = mEtUsername.getText().toString().trim();
String password = mEtPassword.getText().toString().trim();
// 判断账号和密码是否正确
if (username.equals("test") && password.equals("123456")) {
// 如果账号和密码正确,则保存用户名到SharedPreferences中,并且跳转回MainActivity页面
SharedPreferences sp = getSharedPreferences("user_info", MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putString("username", username);
editor.apply();
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
finish();
} else {
// 如果账号或密码错误,则提示用户
Toast.makeText(LoginActivity.this, "账号或密码错误,请重新输入!", Toast.LENGTH_SHORT).show();
}
}
});
}
}
```
CartActivity代码:
```java
public class CartActivity extends AppCompatActivity {
private ListView mListView;
private List<GoodsModel> mGoodsList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cart);
// 获取传递过来的购物车商品信息
Intent intent = getIntent();
String username = intent.getStringExtra("username");
String goodsName = intent.getStringExtra("goods_name");
double price = intent.getDoubleExtra("price", 0);
// 构造一个GoodsModel对象,用于展示在购物车列表中
GoodsModel goodsModel = new GoodsModel(0, goodsName, price);
mGoodsList.add(goodsModel);
// 初始化ListView
mListView = findViewById(R.id.list_view);
mListView.setAdapter(new CartAdapter(mGoodsList));
}
}
```
阅读全文