Como posso salvar um HashMap nas preferências compartilhadas no Android?
android
sharedpreferences
jibistomas
fonte
fonte
Respostas:
Eu não recomendaria escrever objetos complexos em SharedPreference. Em vez disso, usaria
ObjectOutputStream
para gravá-lo na memória interna.fonte
Eu uso
Gson
para converterHashMap
paraString
e, em seguida, salve-o emSharedPrefs
fonte
Eu escrevi um código simples para salvar o mapa de preferência e carregar o mapa de preferência. Nenhuma função GSON ou Jackson necessária. Acabei de usar um mapa com String como chave e Boolean como valor.
fonte
getApplicationContext
partir de uma aula simples?fonte
Como um desdobramento da resposta de Vinoj John Hosan, eu modifiquei a resposta para permitir inserções mais genéricas, com base na chave dos dados, em vez de uma única chave como
"My_map"
.Na minha implementação,
MyApp
é minhaApplication
classe de substituição eMyApp.getInstance()
atua para retornar ocontext
.fonte
Context
instância de uma biblioteca. Confira esta outra pergunta do SO: É possível obter o contexto do aplicativo em um projeto de biblioteca do Android?Você pode tentar usar JSON.
Para salvar
Para obter
fonte
fonte
Usando PowerPreference .
Guardar dados
Ler dados
fonte
mapa -> string
string -> mapa
fonte
Você pode usar isso em um arquivo dedicado em preferências compartilhadas (fonte: https://developer.android.com/reference/android/content/SharedPreferences.html ):
fonte
O jeito preguiçoso: armazenando cada chave diretamente em SharedPreferences
Para o caso de uso restrito, quando seu mapa não terá mais do que algumas dezenas de elementos, você pode aproveitar o fato de que SharedPreferences funciona quase como um mapa e simplesmente armazena cada entrada em sua própria chave:
Armazenando o mapa
Lendo chaves do mapa
No caso de você usar um nome de preferência personalizado (ou seja
context.getSharedPreferences("myMegaMap")
), você também pode obter todas as chaves comprefs.getAll()
fonte
Eu sei que é um pouco tarde, mas espero que isso possa ser útil para qualquer leitura ..
então o que eu faço é
1) Crie HashMap e adicione dados como: -
2) Escreva no editor de preferências de compartilhamento como: -
3) Lendo dados como: - em uma nova classe onde você deseja que sejam lidos
fonte