From c5e1254d5957b46c1afb14f933db10e4023fa500 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 15 Oct 2013 15:59:13 +0400 Subject: load thumbnails in comicslist asynchronously --- src/org/fox/ttcomics/ComicListFragment.java | 58 ++++++++++++++++++++--------- src/org/fox/ttcomics/MainActivity.java | 6 ++- 2 files changed, 45 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/org/fox/ttcomics/ComicListFragment.java b/src/org/fox/ttcomics/ComicListFragment.java index edd13ff..349084a 100644 --- a/src/org/fox/ttcomics/ComicListFragment.java +++ b/src/org/fox/ttcomics/ComicListFragment.java @@ -61,12 +61,10 @@ public class ComicListFragment extends Fragment implements OnItemClickListener { m_baseDirectory = baseDirectory; } - public ComicListFragment(int mode) { - super(); - + public void setMode(int mode) { m_mode = mode; } - + private class ComicsListAdapter extends SimpleCursorAdapter { public ComicsListAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) { @@ -135,30 +133,56 @@ public class ComicListFragment extends Fragment implements OnItemClickListener { ImageView thumbnail = (ImageView) v.findViewById(R.id.thumbnail); if (thumbnail != null) { + thumbnail.setImageResource(R.drawable.ic_launcher); + if (m_activity.isStorageAvailable() && thumbnailFile.exists()) { - // - + thumbnail.setTag(thumbnailFile.getAbsolutePath()); + + CoverImageLoader imageLoader = new CoverImageLoader(); + imageLoader.execute(thumbnail); + } + } + + return v; + } + } + + class CoverImageLoader extends AsyncTask { + private ImageView m_thumbnail; + + @Override + protected Bitmap doInBackground(ImageView... params) { + m_thumbnail = params[0]; + + if (m_thumbnail != null) { + File thumbnailFile = new File(m_thumbnail.getTag().toString()); + + if (thumbnailFile.exists() && thumbnailFile.canRead()) { + final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(thumbnailFile.getAbsolutePath(), options); - + options.inSampleSize = CommonActivity.calculateInSampleSize(options, 128, 128); options.inJustDecodeBounds = false; Bitmap bmp = BitmapFactory.decodeFile(thumbnailFile.getAbsolutePath(), options); - - if (bmp != null) { - thumbnail.setImageBitmap(bmp); - } - } else { - thumbnail.setImageResource(R.drawable.ic_launcher); + + return bmp; } } - - return v; + + return null; } - } - + + @Override + protected void onPostExecute(Bitmap bmp) { + if (isAdded() && bmp != null) { + m_thumbnail.setImageBitmap(bmp); + } + } + + }; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { diff --git a/src/org/fox/ttcomics/MainActivity.java b/src/org/fox/ttcomics/MainActivity.java index 648a12a..13af786 100644 --- a/src/org/fox/ttcomics/MainActivity.java +++ b/src/org/fox/ttcomics/MainActivity.java @@ -46,7 +46,8 @@ public class MainActivity extends CommonActivity { if (m_selectedTab != tab.getPosition() && m_selectedTab != -1) { - ComicListFragment frag = new ComicListFragment(tab.getPosition()); + ComicListFragment frag = new ComicListFragment(); + frag.setMode(tab.getPosition()); frag.setBaseDirectory(m_baseDirectory); @@ -84,7 +85,8 @@ public class MainActivity extends CommonActivity { Log.d(TAG, "selTab=" + m_selectedTab); - ComicListFragment frag = new ComicListFragment(m_selectedTab); + ComicListFragment frag = new ComicListFragment(); + frag.setMode(m_selectedTab); if (getIntent().getStringExtra("baseDir") != null) { m_baseDirectory = getIntent().getStringExtra("baseDir"); -- cgit v1.2.3