Cómo rellenar GridView si Internet no está disponible, pero las imágenes ya almacenadas en caché a la tarjeta SD
-
21-12-2019 - |
Pregunta
Hola, estoy escribiendo una aplicación en la que estoy analizando imágenes JSON y luego en caché en la tarjeta SD.
lo que quiero hacer?
Quiero cargar imágenes en GridView desde JSON (mediante imágenes en caché en la tarjeta SD), y quiere rellenar GridView (sin importar Internet disponible o no) una vez que las imágenes ya descargadas en la tarjeta SD.
lo que estoy recibiendo?
Soy capaz de almacenar en caché en la tarjeta SD, también para rellenar GridView, pero no puede mostrar imágenes en GridView (si Internet no está disponible) pero las imágenes almacenadas en caché en la tarjeta SD
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_grid_view);
gridView = (GridView) findViewById(R.id.grid_view);
utils = new Util(this);
// Initilizing Grid View
InitilizeGridLayout();
// Gridview adapter
new getImages().execute();
}
private void InitilizeGridLayout() {
Resources r = getResources();
float padding = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
AppConstant.GRID_PADDING, r.getDisplayMetrics());
columnWidth = (int) ((utils.getScreenWidth() - ((AppConstant.NUM_OF_COLUMNS + 1) * padding)) / AppConstant.NUM_OF_COLUMNS);
gridView.setNumColumns(AppConstant.NUM_OF_COLUMNS);
gridView.setColumnWidth(columnWidth);
gridView.setStretchMode(GridView.NO_STRETCH);
gridView.setPadding((int) padding, (int) padding, (int) padding,
(int) padding);
gridView.setHorizontalSpacing((int) padding);
gridView.setVerticalSpacing((int) padding);
}
class getImages extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
JSONObject json = JSONfunctions.getJSONfromURL(location);
try {
JSONArray jarray;
jarray = json.getJSONArray(TAG_ITEMS);
for (int i = 0; i < jarray.length(); i++) {
JSONObject gridImages = jarray.getJSONObject(i);
imagePaths.add(gridImages.getString("saved_location"));
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
adapter = new GridViewImageAdapter(GridViewActivity.this, imagePaths,
columnWidth);
// setting grid view adapter
gridView.setAdapter(adapter);
}
}
}
Solución
Aquí está la solución completa de imágenes de visualización del servidor a través de JSON en línea también sin conexión ..
Esperando que resuelva su problema.
gracias
Otros consejos
es mejor que uses la lacyloading .. Esto almacenará en caché las imágenes y mostrar las imágenes, incluso si no hay internet disponible
Puede usar thest1 / lazylist
o en caché de imagen avanzada Android-Universal-Image-loader de aquí
Android-universal-cargador-cargador Contiene diferentes ejemplos que incluyen Lazyloding en la vista de cuadrícula.
Espero que esto te ayude
Creo que esto puede ayudarte.Acaba de poner otro bloque si antes de revisar la conexión a Internet
if(SDcard is emty)
{
if(netAvailable)
{go as usual}
}else{nothing}
}
else{
take images from sd card and display it.}
Esto podría darle un poco de sugerencia para resolver el problema ... Si desea actualizar sus datos de la tarjeta SD, antes de ingresar al servicio web, borra el SDCard.