Cómo rellenar GridView si Internet no está disponible, pero las imágenes ya almacenadas en caché a la tarjeta SD

StackOverflow https://stackoverflow.com//questions/24011147

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);
        }
    }
}

¿Fue útil?

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 ..

  1. dbadapter

  2. GridViewActivity

  3. fullscreenviewactivity

  4. 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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top