私のアプリケーションでは、jsonに情報が含まれているURLを取得します。私は電話でこのjsonを保存したいと思いますし、電話がURLと同じかどうかはjsonを使いました。 jsonを変更する場合は、jsonを再度ダウンロードする必要があります。JSONをシステムキャッシュに保存する
私はJSONを回収し、私のオブジェクトを読み取るが、私はあなたが私を助けてくださいことができます携帯電話のメモリにJSONを維持し、データに
を保存するためにそれを再度ダウンロードを避けるために、JSONを使用したいのですか?
一例:
public void affichage_phenomene(final String id_phenomene)
{
if(id_phenomene.length()==0)
return;
mProgressDialog = ProgressDialog.show(this, "Patientez","Chargement...", true);
new Thread((new Runnable()
{
public void run()
{
try
{
JSONArray jsonArray = Json.getJsonByUrl(page_Json); // On récupère un tableau contenant les éléments json
JSONObject jsonObject = jsonArray.getJSONObject(0);
listItem2 = new ArrayList<HashMap<String, String>>();
map.put("titre", jsonObject.getString("nom"));
map.put("description", jsonObject.getString("description"));
map.put("liens", jsonObject.getString("liens"));
map.put("note_moyenne", jsonObject.getString("note_moyenne"));
map.put("img",LoadPicture.loadImageFromWebOperations(getString(R.string.URL_Images)+jsonObject.getString("image"),"/sdcard/MysticWay/phenomene_"+idphenomene+".jpg"));
JSONArray liste_lieux = jsonObject.getJSONArray("lieux");
nombre_de_lieux = liste_lieux.length();
if(nombre_de_lieux>0)
{
for(int i = 0;i<nombre_de_lieux;i++)
{
map3 = new HashMap<String, String>();
JSONObject lieucible = liste_lieux.getJSONObject(i);
map3.put("idlieu", lieucible.getString("idlieuxspirituels"));
map3.put("nomlieu", lieucible.getString("nom_lieux"));
map3.put("adresse", lieucible.getString("adresse_lieux"));
map3.put("img", LoadPicture.loadImageFromWebOperations(getString(R.string.URL_Images)+lieucible.getString("image"),"/sdcard/MysticWay/icon_lieu_"+lieucible.getString("idlieuxspirituels")+".jpg"));
listItem2.add(map3);
}
}
handler.sendEmptyMessage(0);
return;
}
catch (Exception e)
{
e.printStackTrace();
handler.sendEmptyMessage(1);
return;
}
}
})).start();
}
private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
if(msg.what == 0)
{
// Si le transfert c'est bien exécuté
mProgressDialog.dismiss();
Titre.setText(map.get("titre"));
Description.setText(Html.fromHtml(map.get("description")));
Lien.setText(map.get("liens"));
note.setText(map.get("note_moyenne"));
if(nombre_de_lieux==1)
{
View_Fiche_Phenomene.this.liste_lieux.setText(nombre_de_lieux+" lieu est associé à ce phénomène.");
liste_lieux.setEnabled(true);
}
else if (nombre_de_lieux>1)
{
View_Fiche_Phenomene.this.liste_lieux.setText(nombre_de_lieux+" lieux sont associés à ce phénomène.");
liste_lieux.setEnabled(true);
}
Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, 0);
if (map.get("img") == null)
Image.setImageResource(R.drawable.noimage);
else
Image.setImageDrawable(Drawable.createFromPath(map.get("img")));
if(Float.parseFloat(map.get("note_moyenne"))== 5)//img 5
notemoyenne.setImageResource(R.drawable.etoile_5);
else if (Float.parseFloat(map.get("note_moyenne"))<5 && Float.parseFloat(map.get("note_moyenne")) > 4)//img 4.5
notemoyenne.setImageResource(R.drawable.etoile_4_5);
else if (Float.parseFloat(map.get("note_moyenne")) == 4)//img 4
notemoyenne.setImageResource(R.drawable.etoile_4);
else if (Float.parseFloat(map.get("note_moyenne"))<4 && Float.parseFloat(map.get("note_moyenne")) > 3)//img 3.5
notemoyenne.setImageResource(R.drawable.etoile_3_5);
else if (Float.parseFloat(map.get("note_moyenne")) == 3)//img 3
notemoyenne.setImageResource(R.drawable.etoile_3);
else if (Float.parseFloat(map.get("note_moyenne"))<3 && Float.parseFloat(map.get("note_moyenne")) > 2)//img 2.5
notemoyenne.setImageResource(R.drawable.etoile_2_5);
else if (Float.parseFloat(map.get("note_moyenne")) == 2)//img 2
notemoyenne.setImageResource(R.drawable.etoile_2);
else if (Float.parseFloat(map.get("note_moyenne"))<2 && Float.parseFloat(map.get("note_moyenne")) > 1)//img 1.5
notemoyenne.setImageResource(R.drawable.etoile_1_5);
else if (Float.parseFloat(map.get("note_moyenne")) == 1)//img 1
notemoyenne.setImageResource(R.drawable.etoile_1);
else if (Float.parseFloat(map.get("note_moyenne"))<1 && Float.parseFloat(map.get("note_moyenne")) > 0)//img 0.5
notemoyenne.setImageResource(R.drawable.etoile_0_5);
//sinon img 0
}
if(msg.what == 1)
{
// Erreur : réseau ou autre
mProgressDialog.dismiss();
AlertDialog.Builder adb=new AlertDialog.Builder(mContext);
adb.setTitle("Erreur");
adb.setMessage("Impossible de comuniquer avec le serveur!");
adb.setPositiveButton("Ok", null);
adb.show();
}
};
};
ありがとうございます。しかし、jsonが更新されているかどうかはどうですか? – Algodrill
これはデータの内容と更新頻度によって異なります。私はそれが異なっているかどうかを確認する簡単な方法を、それをもう一度ダウンロードすることなく知らない。数時間ごとに、または1日に1回、バックグラウンドでダウンロードするサービスを設定することができます –
Sqlite DBの使用に関する良い考え方。 – ajacian81