Skip to content
This repository was archived by the owner on Feb 13, 2025. It is now read-only.

Commit 0d6eadc

Browse files
committed
Try and prevent image flickering
1 parent 9f14f05 commit 0d6eadc

File tree

3 files changed

+20
-5
lines changed

3 files changed

+20
-5
lines changed

app/src/main/java/me/anon/controller/adapter/PlantAdapter.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,17 @@ public void setPlants(List<Plant> plants)
9090
String summary = plant.generateLongSummary(((PlantHolder)viewHolder).itemView.getContext());
9191
((PlantHolder)viewHolder).getSummary().setText(Html.fromHtml(summary));
9292

93-
ImageLoader.getInstance().cancelDisplayTask(((PlantHolder)viewHolder).getImage());
9493
if (plant.getImages() != null && plant.getImages().size() > 0)
9594
{
95+
String imagePath = "file://" + plant.getImages().get(plant.getImages().size() - 1);
96+
97+
if (((PlantHolder)viewHolder).getImage().getTag() == null || !((PlantHolder)viewHolder).getImage().getTag().toString().equalsIgnoreCase(imagePath))
98+
{
99+
ImageLoader.getInstance().cancelDisplayTask(((PlantHolder)viewHolder).getImage());
100+
}
101+
102+
((PlantHolder)viewHolder).getImage().setTag(imagePath);
103+
96104
ImageAware imageAware = new ImageViewAware(((PlantHolder)viewHolder).getImage(), true);
97105
ImageLoader.getInstance().displayImage("file://" + plant.getImages().get(plant.getImages().size() - 1), imageAware, MainApplication.getDisplayImageOptions());
98106
}

app/src/main/java/me/anon/controller/adapter/PlantSelectionAdapter.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,18 @@ public void setSelectedIds(ArrayList<String> selectedIds)
8080
});
8181
holder.getName().setText(plant.getName());
8282

83-
ImageLoader.getInstance().cancelDisplayTask(holder.getImage());
8483
if (plant.getImages() != null && plant.getImages().size() > 0)
8584
{
85+
String imagePath = "file://" + plant.getImages().get(plant.getImages().size() - 1);
86+
87+
if (holder.getImage().getTag() == null || !holder.getImage().getTag().toString().equalsIgnoreCase(imagePath))
88+
{
89+
ImageLoader.getInstance().cancelDisplayTask(holder.getImage());
90+
}
91+
92+
holder.getImage().setTag(imagePath);
8693
ImageAware imageAware = new ImageViewAware(holder.getImage(), true);
87-
ImageLoader.getInstance().displayImage("file://" + plant.getImages().get(plant.getImages().size() - 1), imageAware, MainApplication.getDisplayImageOptions());
94+
ImageLoader.getInstance().displayImage(imagePath, imageAware, MainApplication.getDisplayImageOptions());
8895
}
8996
else
9097
{

app/src/main/java/me/anon/grow/fragment/PlantSelectDialogFragment.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public PlantSelectDialogFragment(boolean multiSelect)
6868

6969
adapter = new PlantSelectionAdapter(PlantManager.getInstance().getSortedPlantList(null), null, getActivity())
7070
{
71-
@Override public void onBindViewHolder(PlantSelectHolder holder, int position)
71+
@Override public void onBindViewHolder(PlantSelectHolder holder, final int position)
7272
{
7373
super.onBindViewHolder(holder, position);
7474

@@ -100,7 +100,7 @@ public PlantSelectDialogFragment(boolean multiSelect)
100100
getSelectedIds().remove(plant.getId());
101101
}
102102

103-
adapter.notifyDataSetChanged();
103+
adapter.notifyItemChanged(position);
104104
}
105105
});
106106
}

0 commit comments

Comments
 (0)