인터넷을 사용할 수 없지만 이미 SD 카드에 캐시 된 이미지가있는 경우 GridView를 채우는 방법
-
21-12-2019 - |
문제
안녕하세요, JSON 이미지를 구문 분석하고 SD 카드로 캐싱하는 응용 프로그램을 작성하고 있습니다.
내가하고 싶은 일은 무엇입니까?
이미지를 GridView에서 SD 카드에 캐싱하고 이미지를 SD 카드에 이미 다운로드 한 이미지가 이미 다운로드되면 GridView (인터넷 사용 가능)를 채우고 싶습니다.
내가 얻고있는 것은 무엇입니까?
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);
}
}
}
. 다른 팁
더 나은 Lazyloading을 사용합니다. 이렇게하면 이미지가 캐시되고 이미지를 표시 할 수 있습니다
thest1 / lazylist를 사용할 수 있습니다.
또는 Android-Universal-Image-loader 캐싱 여기에서
Android-Universal-Image-Loader는 그리드 뷰에서 lazyloding을 포함한 다른 예제를 포함합니다.
이것이 당신을 도울 것입니다
이것이 당신을 도울 수 있다고 생각합니다.인터넷 연결을 확인하기 전에 블록을 넣으면
if(SDcard is emty)
{
if(netAvailable)
{go as usual}
}else{nothing}
}
else{
take images from sd card and display it.}
.
문제를 해결하기 위해 몇 가지 힌트를 줄 수 있습니다 ...... SD 카드 데이터를 새로 고치고 웹 서비스를 치르기 전에 SDCard를 지우기를 원한다면
제휴하지 않습니다 StackOverflow