Comment remplir la grille si Internet n'est pas disponible mais des images déjà cachées sur la carte SD

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

Question

Bonjour J'écris une application dans laquelle je suis en train d'analyser des images JSON, puis de la mise en cache dans la carte SD.

ce que je veux faire?

Je veux charger des images dans GridView de JSON (en mettant en cache des images dans la carte SD), et wanna populez-vous GridView (peu importe Internet disponible ou non) une fois les images déjà téléchargées dans la carte SD.

ce que je reçois?

Je suis capable de mettre en cache des images dans la carte SD, également de remplir la grille de la grille, mais de ne pas pouvoir afficher des images dans GridView (si Internet non disponible) mais des images mis en cache dans la carte 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);
        }
    }
}

Était-ce utile?

La solution

Voici la solution complète d'affichage des images du serveur via JSON Online également hors ligne.

  1. dbadapter

  2. gridviewactivité

  3. FullScreenViewACTIVITY

  4. En espérant que cela résoudra votre problème.

    merci

Autres conseils

C'est mieux que vous utilisez la luisyloading .. Cela mettra en cache les images et affichera des images, même s'il n'y a pas d'Internet n'est disponible

Vous pouvez soit utiliser thest1 / lazyliste

ou avance de mise en cache d'image android-universel-image-charger d'ici

Android-Universal-Image-Loader contient des exemples différents, y compris la lazylodage en vue de la grille.

J'espère que cela vous aidera

Je pense que cela peut vous aider.Il suffit de mettre un autre si Block avant de vérifier la connexion Internet

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

Cela pourrait vous donner un indice pour résoudre le problème ...... Si vous souhaitez actualiser vos données de carte SD, avant de frapper le service Web Effacer le SDCard.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top