インターネットが利用できない場合はGridViewを入力する方法がすでにSDカードにキャッシュされています
-
21-12-2019 - |
質問
こんにちは私はJSON画像を解析してからSDカードにキャッシュしているアプリケーションを書いています。
私がやりたいこと?
JSON(画像をSDカードにキャッシュすることによって)から画像を画像にロードし、GridView(インターネットではなくインターネットでも使用できない)に、すでにSDカードにダウンロードしたくない。
私が手に入っていること?
SDカードに画像をキャッシュすることは、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);
}
}
}
. 他のヒント
それはあなたがLazyloadingを使うのが良いです。これは画像をキャッシュし、インターネットがありません
thest1 / lazylistのどちらかを使用することができます。
または前進画像キャッシングAndroid - Universal-Image-Loader ここから
Android - Universal-Image-Loaderは、グリッドビューでラジオーディングを含む異なる例を含みます。
これがあなたを助けることを願っています
これはあなたを助けるかもしれないと思います。インターネット接続を確認する前にブロックを置くただ別のIFブロックを入れる
if(SDcard is emty)
{
if(netAvailable)
{go as usual}
}else{nothing}
}
else{
take images from sd card and display it.}
.
これはあなたに問題を解決するためにいくつかのヒントを与えるかもしれません...... SDカードのデータを更新したい場合は、Webサービスを押す前にSDカードを消去してください。
所属していません StackOverflow