Come popolare GridView Se Internet non è disponibile ma le immagini già memorizzate nella cache alla scheda SD
-
21-12-2019 - |
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);
}
}
}
. Soluzione
Ecco la soluzione completa di visualizzazione delle immagini dal server tramite JSON online anche offline ..
- .
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.