Bonjour je suis débutant dans anroid. J'ai créé un tiroir de navigation et des fragments. Je peux obtenir des données de JSON avec l'url. Cela fonctionne en ligne. Mais téléphone quand déconnecté je reçois l'erreur "incapable de résoudre l'hôte". Je veux obtenir des données de l'URL avec json en mode hors connexion. Il n'est pas la mise en cache enter image description herevolley json image du cache ne fonctionne pas hors ligne
fragment
private static final String jsonUrl = "http://sunumsitesi.com/json.php";
private ProgressDialog pDialog;
private List<Urun> urunList = new ArrayList<Urun>();
private ListView listView;
private CustomListAdapter adapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View root = inflater.inflate(R.layout.fragment_yemek, container, false);
return root;
}
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
View v = getView();
if(v!=null)
{
listView = (ListView) v.findViewById(R.id.yemekList);
adapter = new CustomListAdapter(getActivity(), urunList);
listView.setAdapter(adapter);
pDialog = new ProgressDialog(getActivity());
pDialog.setMessage("Loading...");
pDialog.show();
JsonArrayRequest urunReq = new JsonArrayRequest(jsonUrl, new Response.Listener<JSONArray>()
{
@Override
public void onResponse(JSONArray response)
{
hidePDialog();
for (int i = 0; i < response.length(); i++)
{
try
{
JSONObject obj = response.getJSONObject(i);
Urun urun = new Urun();
urun.setUrun_adi(obj.getString("urun_adi"));
urun.setUrl("http://www.iremdeveci.com/ornekler/resimler/resim.png");//example
urunList.add(urun);
} catch (JSONException ex)
{
ex.printStackTrace();
}
}
adapter.notifyDataSetChanged();
}
}, new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError volleyError)
{
Toast.makeText(getActivity(), volleyError.getMessage(), Toast.LENGTH_LONG).show();
}
});
AppController.getmInstance().addToRequestQueue(urunReq);
}
}
@Override
public void onDestroy()
{
super.onDestroy();
hidePDialog();
}
private void hidePDialog()
{
if(pDialog!=null)
{
pDialog.dismiss();
pDialog=null;
}
}
et CustomListAdapter (extension BaseAdapter)
private Activity activity;
private LayoutInflater inflater;
private List<Urun> urunItems;
ImageLoader imageLoader = AppController.getmInstance().getmImageLoader();
public CustomListAdapter(Activity activity,List<Urun> urunItems)
{
this.activity=activity;
this.urunItems=urunItems;
}
@Override
public int getCount()
{
return urunItems.size();
}
@Override
public Object getItem(int location)
{
return urunItems.get(location);
}
@Override
public long getItemId(int position)
{
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
if (inflater==null)
{
inflater=(LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
if (convertView==null)
{
convertView=inflater.inflate(R.layout.list_row,null);
}
if (imageLoader==null)
{
imageLoader=AppController.getmInstance().getmImageLoader();
}
NetworkImageView urunResim=(NetworkImageView)convertView.findViewById(R.id.urunResim);
TextView urun_adi= (TextView)convertView.findViewById(R.id.urun_adi);
Urun u = urunItems.get(position);
urunResim.setImageUrl(u.getUrl(),imageLoader);
urun_adi.setText(u.getUrun_adi());
return convertView;
}
LruBitmapCache.java
public static int getDefaultLruCacheSize()
{
final int maxMemory=(int)(Runtime.getRuntime().maxMemory()/1024);
final int cacheSize= maxMemory/8;
return cacheSize;
}
public LruBitmapCache()
{
this(getDefaultLruCacheSize());
}
public LruBitmapCache(int sizeInKiloBytes)
{
super(sizeInKiloBytes);
}
@Override
protected int sizeOf(String key, Bitmap value)
{
return value.getRowBytes() * value.getHeight()/1024;
}
@Override
public Bitmap getBitmap(String url)
{
return get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap)
{
put(url,bitmap);
}
comment obtenir des données d'URL en mode hors connexion? C'est la question? – JimHawkins
@Ulrich il doit être mis en cache en ligne – qwerty