Как заполнить GRIDVIEW, если Интернет недоступен, но изображения уже кэшированы на SD-карту
-
21-12-2019 - |
Вопрос
Привет, я пишу приложение, в котором я разрабатываю изображения JSON, а затем кэшировать на SD-карту.
Что я хочу сделать?
Я хочу загрузить изображения в GridView с JSON (кэшируя изображения на SD-карту), и хочешь заполнить GRIDVIEW (независимо от того, чтобы Интернет доступен или нет) после того, как изображения уже загружаются на SD-карту.
Что я получаю?
Я могу кэшировать изображения на SD-карту, также для заполнения GridView, но не в состоянии показывать изображения в GridView (если Интернет недоступен), но изображения кэшированы на 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);
}
}
}
. Решение
Вот полное решение просмотра изображений с сервера через JSON Online, а также в автономном режиме ..
надеется, что это решит вашу проблему.
Спасибо
Другие советы
Это лучше, вы используете лазиловую катушку .. Это будет кэшировать изображения и отображать изображения, даже нет в Интернете, доступно
Вы можете либо использовать thest1 / lazylist
или продвижение кэширования изображения Android-Universal-Image-Loader Отсюда
Android-Universal-Image-погрузчик содержит разные примеры, включая лазилодинг в сетке.
Надеюсь, это поможет вам
Я думаю, что это может помочь вам.Просто положите другой, если блок перед проверкой подключения к Интернету
if(SDcard is emty)
{
if(netAvailable)
{go as usual}
}else{nothing}
}
else{
take images from sd card and display it.}
.
Это может дать вам подсказку, чтобы решить проблему ...... Если вы хотите обновить данные вашей SD-карты, затем перед ударом веб-службы очистите SDCard.