我该如何临时保存数据?比如Android应用中的购物车

时间:2016-08-29 12:50:08

标签: android listview arraylist global-variables

我是初学者安卓开发者。我有一个关于临时保存购物车数据的问题。这是一个定制衬衫应用程序。客人应选择衣领,袖口等。 我使用listview显示客户选择的这些选定项目和选项。

public class Cart_item_list {
private static int cart_itemimage;
private static String cart_itemname;
private static String cart_itemprice;
private static String cart_collar;
private static String cart_cuffs;
private static String cart_placket;
private static String cart_pocket;
private static String cart_fit;
private static String cart_initial;

public static int getCart_itemimage() {
    return cart_itemimage;
}

public static void setCart_itemimage(int cart_itemimage) {
    Cart_item_list.cart_itemimage = cart_itemimage;
}

public static String getCart_itemname() {
    return cart_itemname;
}

public static void setCart_itemname(String cart_itemname) {
    Cart_item_list.cart_itemname = cart_itemname;
}

public static String getCart_itemprice() {
    return cart_itemprice;
}

public static void setCart_itemprice(String cart_itemprice) {
    Cart_item_list.cart_itemprice = cart_itemprice;
}

public static String getCart_collar() {
    return cart_collar;
}

public static void setCart_collar(String cart_collar) {
    Cart_item_list.cart_collar = cart_collar;
}

public static String getCart_cuffs() {
    return cart_cuffs;
}

public static void setCart_cuffs(String cart_cuffs) {
    Cart_item_list.cart_cuffs = cart_cuffs;
}

public static String getCart_placket() {
    return cart_placket;
}

public static void setCart_placket(String cart_placket) {
    Cart_item_list.cart_placket = cart_placket;
}

public static String getCart_pocket() {
    return cart_pocket;
}

public static void setCart_pocket(String cart_pocket) {
    Cart_item_list.cart_pocket = cart_pocket;
}

public static String getCart_fit() {
    return cart_fit;
}

public static void setCart_fit(String cart_fit) {
    Cart_item_list.cart_fit = cart_fit;
}

public static String getCart_initial() {
    return cart_initial;
}

public static void setCart_initial(String cart_initial) {
    Cart_item_list.cart_initial = cart_initial;
}


public Cart_item_list(int cart_itemimage, String cart_itemname, String cart_itemprice, String cart_collar, String cart_cuffs, String cart_placket, String cart_pocket, String cart_fit, String cart_initial) {
    this.cart_itemimage = cart_itemimage;
    this.cart_itemname = cart_itemname;
    this.cart_itemprice = cart_itemprice;
    this.cart_collar = cart_collar;
    this.cart_cuffs = cart_cuffs;
    this.cart_placket = cart_placket;
    this.cart_pocket = cart_pocket;
    this.cart_fit = cart_fit;
    this.cart_initial = cart_initial;

}

}

这是listview适配器的项目列表。

package com.example.yeong.shifendingzhi;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;

public class Cart_item_adapter extends BaseAdapter {
Context context;
ArrayList<Cart_item_list> cart_item_listArrayList;


public Cart_item_adapter(Context context, ArrayList<Cart_item_list> cart_item_listArrayList) {
    this.context = context;
    this.cart_item_listArrayList = cart_item_listArrayList;
}


@Override
public int getCount() {
    return cart_item_listArrayList.size();
}

@Override
public Object getItem(int i) {
    return cart_item_listArrayList.get(i);
}

@Override
public long getItemId(int i) {
    return i;
}

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
    view = LayoutInflater.from(context).inflate(R.layout.cart_listview, null);
    ImageView selected_item_image = (ImageView) view.findViewById(R.id.selected_item_image);
    TextView selected_cart_name = (TextView) view.findViewById(R.id.selected_cart_name);
    TextView selected_cart_cuffs = (TextView) view.findViewById(R.id.selected_cart_cuffs);
    TextView selected_cart_initial = (TextView) view.findViewById(R.id.selected_cart_initial);
    TextView selected_cart_placket = (TextView) view.findViewById(R.id.selected_cart_placket);
    TextView selected_cart_fit = (TextView) view.findViewById(R.id.selected_cart_fit);
    TextView selected_cart_pocket = (TextView) view.findViewById(R.id.selected_cart_pocket);
    TextView selected_cart_price = (TextView) view.findViewById(R.id.selected_cart_price);
    TextView selected_cart_collar = (TextView) view.findViewById(R.id.selected_cart_collar);

    selected_cart_name.setText(cart_item_listArrayList.get(i).getCart_itemname());
    selected_cart_cuffs.setText(cart_item_listArrayList.get(i).getCart_cuffs());
    selected_cart_initial.setText(cart_item_listArrayList.get(i).getCart_initial());
    selected_cart_placket.setText(cart_item_listArrayList.get(i).getCart_placket());
    selected_cart_fit.setText(cart_item_listArrayList.get(i).getCart_fit());
    selected_cart_pocket.setText(cart_item_listArrayList.get(i).getCart_pocket());
    selected_cart_price.setText(cart_item_listArrayList.get(i).getCart_itemprice());
    selected_cart_collar.setText(cart_item_listArrayList.get(i).getCart_collar());
    selected_item_image.setImageResource(cart_item_listArrayList.get(i).getCart_itemimage());
    return view;
}

}

它是listview适配器 我尝试创建全局变量arraylist,并且剪切了很多,但都是使用appllication失败的单例。 你能帮我为listview制作全球性的arraylist吗? 它帮助我临时保存数据并将arraylist数据转移到另一个活动上。 感谢。

4 个答案:

答案 0 :(得分:1)

我推荐来自https://github.com/pilgr/Paper

的Paper库

它易于配置,无需设置任何sql类型的连接,就像在本地写入文本文件一样。 我用它,它很坚固。 我主要用它来存储登录活动页面中记住我的用户名和密码:

 if(ckbRemember.isChecked())
                {
                    Paper.book().write(Common.USER_KEY,edtUsername.getText().toString());
                    Paper.book().write(Common.PWD_KEY,edtPassword.getText().toString());
                }

当您想要随时清除数据时,可以从以下任何活动中清除数据:

Paper.book().destroy();

答案 1 :(得分:0)

使用简单的POJO类。创建一个存储衬衫属性的java类。然后声明一个以该类为基本类型的全局arraylist。

public class Shirt{
    String cuffs;
    String plackets;
    String collars;
    ...

public String getCuff(){...}
public String getCollar(){...}

public void setCuff(){...}
public void setCollar(){...}
}

ArrayList<Shirt> shirts = new ArrayList<>();

现在,如果要保留它,则必须将其存储在SharedPreference或某个数据库中。如果您不想要存储但需要全局上下文类型变量,则可以使用Application类或静态变量,具体取决于您的用例。

编辑:一个简单的example Application类。请记得在Manifest中命名包。

答案 2 :(得分:0)

如果您想要更长时间存储所有这些值(例如,几天或用户关闭您的应用),您可以将这些值存储在shared preferences中:

SharedPreferences spInstance = getSharedPreferences("my_identifier", Context.MODE_PRIVATE);
SharedPreferences.Editor spEditor = spInstance.edit();
spEditor.putString("key", "value");
spEditor.apply(); // Save the data
//Retrieve the data:
SharedPreferences spInstance = getSharedPreferences("my_identifier", Context.MODE_PRIVATE);
SharedPreferences.Editor spEditor = spInstance.edit();
String myString = spInstance.getString("key", "default-value");

就是这样!

答案 3 :(得分:0)

Android提供了几个保存持久应用程序数据的选项。您选择的解决方案取决于您的特定需求,例如数据是否应该是私有的,持久的以及您的数据需要多少空间。看看Developers Guide