我的项目在使用SharedPreferences保存ArrayList <t>时遇到问题

时间:2018-12-07 13:35:13

标签: java android arrays arraylist sharedpreferences

我有一个问题使我发疯。 我知道如何在Android中使用“ SharedPreferences”,但我不知道将其放在我的项目中的位置,例如onCreate(),onDestroy()或其他地方。 *我想将NoteLab.mNotes保存在NoteListFragment

* Note.java

$stmt20 = $conexao->prepare("
        INSERT INTO esc_usuarios_pgtoparcelas (parcela_codigo_plano, parcela_mes, parcela_valorBonificacao, parcela_situacao)
        VALUES
        (LAST_INSERT_ID(), ?, ?, ?)
        ");

$stmt20->bind_param('sdssds', $m, $zero, $parcela_situacao_prog);

for ($x = 0; $x <= 1000; $x++) {
    $m = $array_of_m[$x];
    $stmt20->execute();
}

* NoteLab.java

package notes.com.example.alireza;
public class Note {
public UUID nId;
public Date nDate;
public String nTitle;
public String nDetails;

public Note(){
    nId = UUID.randomUUID();
    nDate = new Date();
}
public Date getnDate(){
    return nDate;
}
public UUID getnUUID(){
    return nId;
}

public String getnTitle() {
    return nTitle;
}

public void setnTitle(String nTitle) {
    this.nTitle = nTitle;
}

public String getnDetails() {
    return nDetails;
}

public void setnDetails(String nDetails) {
    this.nDetails = nDetails;
}
}

* NoteListFragment.java

package notes.com.example.alireza;
import android.content.Context;
import java.util.ArrayList;
import java.util.UUID;

class NoteLab {
public static ArrayList<Note> mNotes;
public static NoteLab noteLab;
public Context mAppContext;


private NoteLab(Context AppContext){
    mAppContext = AppContext;
    mNotes = new ArrayList<Note>();

}

public static NoteLab get(Context context){
    if (noteLab == null){
        noteLab = new NoteLab(context.getApplicationContext());
    }
    return noteLab;
}


public static ArrayList<Note> getNotes(){
    return mNotes;
}

public static Note getNote(UUID mId){
    for (Note n: mNotes){
        if (mId == n.getnUUID()){
            return n;
        }
    }
    return null;
}

}

从代码中可以理解,我想保存放置在NoteLab.java中的mNotes arrayList。也有NoteListActivtiy.java也支持NoteListFragment,但我认为可以在NoteListFragment中完成。

感谢stackoverflow和所有尝试帮助我的人。

1 个答案:

答案 0 :(得分:1)

您可以使用 Gson 库将所需内容转换为String,然后可以再次将其取回。

您应将代码放在哪里?这取决于您的业务(或要求)。

如果要将项目数组传递给片段或其他活动,可以使用Gson lib将其转换为字符串,然后将其放入包中,然后将此包传递给您想要的任何内容。然后,在片段或活动中,您也可以通过Gson获得此数组。

这里是一个例子:

Gson gson = new Gson();
gson.toSring(yourData);

// then you can get the data by 
Gson gson = new Gson();
String data = yourBundle.getString("your_key");
yourDataModel = gson.fromJson(data, YourDataModel.class);

// it will work even with ArrayList