From 7ff3f73cddfaab27020a6fe57255a559a601abe9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20P=C3=B3=C5=82grabia?= Date: Fri, 16 Sep 2016 23:58:52 +0200 Subject: [PATCH] Fixed layout in paranomio and loading views in wiki listview. --- .../adapters/WikiLocationsAdapter.java | 26 ++++++++++-------- .../fragments/PanoramioAdapter.java | 19 +++++++++---- app/src/main/res/drawable/noimage.png | Bin 0 -> 6137 bytes app/src/main/res/layout/location_item.xml | 3 +- 4 files changed, 31 insertions(+), 17 deletions(-) create mode 100644 app/src/main/res/drawable/noimage.png diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/adapters/WikiLocationsAdapter.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/adapters/WikiLocationsAdapter.java index 7b723cf..f609f0d 100644 --- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/adapters/WikiLocationsAdapter.java +++ b/app/src/main/java/pl/tpolgrabia/urbanexplorer/adapters/WikiLocationsAdapter.java @@ -1,6 +1,7 @@ package pl.tpolgrabia.urbanexplorer.adapters; import android.content.Context; +import android.graphics.BitmapFactory; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -25,22 +26,25 @@ public class WikiLocationsAdapter extends ArrayAdapter { @Override public View getView(int position, View convertView, ViewGroup parent) { final LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); - View inflatedView; - if (convertView != null) { - // reusing old view - inflatedView = convertView; - } else { - inflatedView = inflater.inflate(R.layout.wiki_locations_item,parent,false); - } + View itemView; + // reusing old view + itemView = convertView != null ? convertView : inflater.inflate(R.layout.wiki_locations_item, parent, false); WikiAppObject wikiPage = getItem(position); + if (wikiPage.getPageId() != null && wikiPage.getPageId().equals(itemView.getTag())) { + // all data were previously loaded + return itemView; + } + + itemView.setTag(wikiPage.getPageId()); // wiki page image preview - ImageView imgPreview = (ImageView) inflatedView.findViewById(R.id.wiki_locs_item_img_preview); + ImageView imgPreview = (ImageView) itemView.findViewById(R.id.wiki_locs_item_img_preview); String url = wikiPage.getThumbnail() != null ? wikiPage.getThumbnail() : null; - TextView locDistanceInfo = (TextView) inflatedView.findViewById(R.id.wiki_locs_item_distance); + TextView locDistanceInfo = (TextView) itemView.findViewById(R.id.wiki_locs_item_distance); locDistanceInfo.setText("" + wikiPage.getDistance() / 1000.0 + " km"); + imgPreview.setImageBitmap(BitmapFactory.decodeResource(getContext().getResources(), R.drawable.noimage)); if (url != null) { ImageLoader.getInstance().displayImage( @@ -50,10 +54,10 @@ public class WikiLocationsAdapter extends ArrayAdapter { } // wiki page title - TextView pageTitle = (TextView) inflatedView.findViewById(R.id.wiki_locs_item_title); + TextView pageTitle = (TextView) itemView.findViewById(R.id.wiki_locs_item_title); pageTitle.setText(wikiPage.getTitle()); - return inflatedView; + return itemView; } } diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/fragments/PanoramioAdapter.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/fragments/PanoramioAdapter.java index 9a92e2c..1b5321a 100644 --- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/fragments/PanoramioAdapter.java +++ b/app/src/main/java/pl/tpolgrabia/urbanexplorer/fragments/PanoramioAdapter.java @@ -1,6 +1,7 @@ package pl.tpolgrabia.urbanexplorer.fragments; import android.content.Context; +import android.graphics.BitmapFactory; import android.support.v4.app.FragmentActivity; import android.view.LayoutInflater; import android.view.View; @@ -31,13 +32,21 @@ public class PanoramioAdapter extends ArrayAdapter { @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); - View itemView = inflater.inflate(R.layout.location_item, parent, false); + View itemView = convertView != null ? convertView : inflater.inflate(R.layout.location_item, parent, false); + final PanoramioImageInfo item = getItem(position); + + if (item.getPhotoId() != null && item.getPhotoId().equals(itemView.getTag())) { + // if it is the the same object f.e. add new objects to the collection (without the slide) + // the refresh makes blinking without this + return itemView; + } + TextView locDesc = (TextView) itemView.findViewById(R.id.location_description); - locDesc.setText(getItem(position).getPhotoTitle()); - final String photoUrl = getItem(position).getPhotoFileUrl(); + itemView.setTag(item.getPhotoId()); + locDesc.setText(item.getPhotoTitle()); + final String photoUrl = item.getPhotoFileUrl(); ImageView photoImg = (ImageView) itemView.findViewById(R.id.photo_img); - // photoImg.setImageBitmap(bm); - // photoImg.setImageBitmap(BitmapFactory.decodeResource(getContext().getResources(), R.drawable.ic_launcher)); + photoImg.setImageBitmap(BitmapFactory.decodeResource(getContext().getResources(), R.drawable.noimage)); ImageLoader.getInstance().displayImage(photoUrl, photoImg, MainActivity.options); return itemView; } diff --git a/app/src/main/res/drawable/noimage.png b/app/src/main/res/drawable/noimage.png new file mode 100644 index 0000000000000000000000000000000000000000..b6ffa8126ba1d8450e53cc9dd17ae7f02fda7adb GIT binary patch literal 6137 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 + android:layout_height="80dp" + android:layout_marginRight="10dp"/>