Come popolare GridView Se Internet non è disponibile ma le immagini già memorizzate nella cache alla scheda SD

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

Domanda

Ciao Sto scrivendo un'applicazione in cui analizzando le immagini JSON e poi nella cache nella scheda SD.

Cosa voglio fare?

Voglio caricare le immagini in GridView da JSON (mediante le immagini nella cache nella scheda SD) e Vuoi popolare GridView (indipendentemente da Internet disponibile o meno) una volta che le immagini già scaricate in scheda SD.

Cosa sto ottenendo?

Sono in grado di cache immagini nella scheda SD, anche per popolare GridView, ma non in grado di mostrare immagini in GridView (se internet non disponibile) ma le immagini memorizzate nella scheda 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);
        }
    }
}
.

È stato utile?

Soluzione

Ecco la soluzione completa di visualizzazione delle immagini dal server tramite JSON online anche offline ..

    .
  1. dbadapter

  2. GridViewAttività

  3. fullscreenVetivity

  4. sperando che risolverà il tuo problema.

    Grazie

Altri suggerimenti

È meglio che usi il railing railing .. Questo cache le immagini e visualizza le immagini anche non c'è internet

Puoi usare thest1 / lazylist

Oppure anticipazione dell'immagine Caching Android-Universal-Image Loader da qui

Android-Universal-Image Loader contiene diversi esempi tra cui lazyloging in Grid View.

Spero che questo ti aiuterà

Penso che questo possa aiutarti.Metti un altro se bloccato prima di controllare la connessione internet

 if(SDcard is emty)
 {
   if(netAvailable)
     {go as usual}
    }else{nothing}
 }
 else{
     take images from sd card and display it.}
.

Questo potrebbe darti un suggerimento per risolvere il problema ...... Se si desidera aggiornare i dati della scheda SD, quindi prima di colpire il servizio Web Cancella la SDCARD.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top