diff --git a/app/src/main/java/com/aurora/store/adapter/InstalledAppsAdapter.java b/app/src/main/java/com/aurora/store/adapter/InstalledAppsAdapter.java index b784163e8..617e76da3 100644 --- a/app/src/main/java/com/aurora/store/adapter/InstalledAppsAdapter.java +++ b/app/src/main/java/com/aurora/store/adapter/InstalledAppsAdapter.java @@ -45,7 +45,9 @@ import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions; import java.util.ArrayList; import java.util.Collections; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import butterknife.BindView; import butterknife.ButterKnife; @@ -95,6 +97,9 @@ public class InstalledAppsAdapter extends RecyclerView.Adapter appList) { this.appList.clear(); this.appList = appList; + final Set appSet = new LinkedHashSet<>(appList); + appList.clear(); + appList.addAll(appSet); if (listType == ListType.INSTALLED || listType == ListType.UPDATES) Collections.sort(appList, (App1, App2) -> App1.getDisplayName().compareToIgnoreCase(App2.getDisplayName())); diff --git a/app/src/main/java/com/aurora/store/model/App.java b/app/src/main/java/com/aurora/store/model/App.java index 8cd498ff9..9aca54b3d 100644 --- a/app/src/main/java/com/aurora/store/model/App.java +++ b/app/src/main/java/com/aurora/store/model/App.java @@ -410,6 +410,19 @@ public class App implements Comparable { return getDisplayName().compareToIgnoreCase(o.getDisplayName()); } + @Override + public boolean equals(Object obj) { + if (!(obj instanceof App)) + return false; + + return getPackageName().equals(((App) obj).getPackageName()); + } + + @Override + public int hashCode() { + return (getPackageName().isEmpty()) ? 0 : getPackageName().hashCode(); + } + public enum Restriction { GENERIC(-1),