Tenho uma ListView com 3 itens ‘Nome Aluno’, ‘Idade’, ‘Sexo’, que consome uma WebService…
Como faço para persistir esses dados via Internal Storage, quando o usuario estiver OffLine…
OBS: A ListView so pega os dados se tiver conexao com a net, eu quero que esses dados continuam quando o usuario estiver OffLine usando o Internal Storage.
Opa Voltando ao assunto!!!
Eu fiz um exemplo basico aqui que salva no InternalStorage o que eu coloco no EditText, Ta salvando e recuperando de boas…
**
//SALVA O OBJ
btn_save.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
data = edit_text.getText().toString();
try {
FileOutputStream fOut = openFileOutput(file,MODE_WORLD_READABLE);
fOut.write(data.getBytes());
fOut.close();
Toast.makeText(getBaseContext(),“ARQUIVO SALVO”,
Toast.LENGTH_SHORT).show();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
//LER O OBJ
btn_read.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
try{
FileInputStream fin = openFileInput(file);
int c;
String temp="";
while( (c = fin.read()) != -1){
temp = temp + Character.toString((char)c);
}
text_view1.setText(temp);
Toast.makeText(getBaseContext(),“ARQUIVO LIDO”,
Toast.LENGTH_SHORT).show();
}catch(Exception e){
}
}
});
**
Ae vai minha ideia… me corrijam se eu estiver errado, eu passo os
valores dos dados da WebService para variaveis correspondente e salvo no
InternalStorage, ae depois de salvo eu seto para a Listiew?
Se eu estiver certo alguem pode me dizer como adaptar esse codigo para salvar varios OBJ e depois listar na ListView…
Vc pode usar o SQLite do Android, mas como tem muito boilerplate, usa uma lib. Melhor até agora que usei foi o Sugar ORM. http://satyan.github.io/sugar/
Eu tava vendo que dava para fazer com o SqLite mas como vai guardar além de muitos Dados também vai guardar .PNG. O SqLite não iria aguentar a sobrecarga de dados e ia começar a travar…
Eu queria um tutorial ou algo melhor de Internal Storage usando ListView…
Todas as ideias aqui estão certas…
Mas o melhor seria guardar tudo no Internal Storage(Memoria do telefone) como Json, porque está pegando os dados de uma WebService que retorna Json.
O meu problema aqui está em exatamente em guardar esse dados Json no InternalStorage e depois Listar os mesmo na ListView.
Nada mas obg.
O PNG eu ja até retirei pq vai comsumir muita internet e muita memoria do usuario.
Eu fiz um exemplo basico aqui que salva no InternalStorage o que eu coloco no EditText, Ta salvando e recuperando de boas…
**
//SALVA O OBJ
btn_save.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
data = edit_text.getText().toString();
try {
FileOutputStream fOut = openFileOutput(file,MODE_WORLD_READABLE);
fOut.write(data.getBytes());
fOut.close();
Toast.makeText(getBaseContext(),“ARQUIVO SALVO”,
Toast.LENGTH_SHORT).show();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
//LER O OBJ
btn_read.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
try{
FileInputStream fin = openFileInput(file);
int c;
String temp="";
while( (c = fin.read()) != -1){
temp = temp + Character.toString((char)c);
}
text_view1.setText(temp);
Toast.makeText(getBaseContext(),“ARQUIVO LIDO”,
Toast.LENGTH_SHORT).show();
}catch(Exception e){
}
}
});
**
Ae vai minha ideia… me corrijam se eu estiver errado, eu passo os valores dos dados da WebService para variaveis correspondente e salvo no InternalStorage, ae depois de salvo eu seto para a Listiew?
Se eu estiver certo alguem pode me dizer como adaptar esse codigo para salvar varios OBJ e depois listar na ListView…
Cara, se vc quer salvar os dados do Json, vc recebe o Json do WS, cria o(s) objeto(s) que vc ta trabalhando com esse json, e grava esse objeto com as opções de SQLite que te demos… o SQLite já grava no internal storage… Se o Android já tem um sistema de BD nele mesmo, não entendi pq vc quer guardar como outro tipo de arquivo.
Me corrija se o que vc quer fazer não é isso.
Eu consigo usar ali “trabalho.save” pq to usando o SugarORM pra DB, é simples assim.
Um exemplo de um app que brinquei um tempo atras.
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("seuEnderecoDeRequisicao")
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.d("Erro JSON", "onFailure: " + e.toString());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
try {
String responseData = response.body().string();
JSONObject json = new JSONObject(responseData);
JSONArray jArray = json.getJSONArray("trabalhos");
for (int i = 0; i < jArray.length(); i++) {
JSONObject obj = jArray.getJSONObject(i);
DateTimeFormatter parser2 = ISODateTimeFormat.dateTimeNoMillis();
DateTime dt = new DateTime(obj.getString("data"));
String tipo = obj.getString("tipo");
String materia = obj.getString("materia");
String dataTrabalho = dt.getDayOfMonth()+"/"+dt.getMonthOfYear()+"/"+dt.getYear();
String professor = obj.getString("professor");
String resumo = obj.getString("resumo");
Trabalhos trabalhos = new Trabalhos(tipo, dataTrabalho, professor, materia, resumo);
trabalhos.save();
}
} catch (JSONException e) {
}
}
});