【发布时间】:2021-07-05 06:09:38
【问题描述】:
我有一个疑问,我不知道如何解决它,如果我有一个只有 3 个位置且值为 [1,2,3] 的 ArrayList。我希望当用户添加例如文本 [1] 时,数据以本地模式保存在设备中。如果稍后用户想要添加另一个文本,例如 [3]。
最后,SharedPreference 将保存 [1,3]。所以如果用户退出应用重新进入,只能兑换文字[2]。因为我已经兑换了[1,3]。
我有以下,但我不知道如何正确继续。
促销代码。
private ArrayList<String> codigoInvitacionAmigos;
codigoInvitacionAmigos.add("1");
codigoInvitacionAmigos.add("2");
codigoInvitacionAmigos.add("3");
这是按钮,当用户点击兑换时
btClaimInvite.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("TODOS: ", codigoInvitacionAmigos.toString());
String codigo_temporal = inpt_Promo_code.getText().toString();
if(!codigo_temporal.isEmpty()){//comprobamos que NO este el campo vacío
for(int i=0; i < codigoInvitacionAmigos.size(); i++){
if(codigoInvitacionAmigos.get(i).contains(codigo_temporal)){
Toast.makeText(Bonus.this, "COINCIDENCIA", Toast.LENGTH_LONG).show();
//Guardar_CodigoReclamadoYCanjeado(0, codigo_temporal);
//codigoInvitacionAmigos.remove(codigo_temporal);
}else{
Toast.makeText(Bonus.this, "No coincide", Toast.LENGTH_LONG).show();
}
}
}
}
});
这就是我试图保存它的方法
private void Cargar_CodigoReclamadoYCanjeado(){
SharedPreferences load_CodigosReclamados = getSharedPreferences("CODIGO_CLAIM", MODE_PRIVATE);
String codi = load_CodigosReclamados.getString("codes_0", "");
if(!codi.isEmpty())codigoInvitacionAmigos.remove(codi);
Log.d("TODOS_Cargar", codi);
String codi_1 = load_CodigosReclamados.getString("codes_1", "");
if(!codi_1.isEmpty())codigoInvitacionAmigos.remove(codi_1);
Log.d("TODOS_Cargar", codi_1);
}
private void Guardar_CodigoReclamadoYCanjeado(int posicion, String codigoCanjeado){
SharedPreferences saved_CodigosReclamados = getSharedPreferences("CODIGO_CLAIM", MODE_PRIVATE);
SharedPreferences.Editor editor = saved_CodigosReclamados.edit();
switch (posicion){
case 1:
editor.putString("codes_1", codigoCanjeado);
break;
default:
editor.putString("codes_0", codigoCanjeado);
break;
}
editor.apply();
Log.d("TODOS_Saved", "Entra Saved");
}
【问题讨论】:
标签: java android arraylist save sharedpreferences