am 709d1c61: am bf0f4d9c: Remove dupes from suggestions. Fixes 2213629

Merge commit '709d1c61daac6ed74e14d268d4e786881ac9eb57' into eclair-mr2-plus-aosp

* commit '709d1c61daac6ed74e14d268d4e786881ac9eb57':
  Remove dupes from suggestions. Fixes 2213629
main
Amith Yamasani 2009-10-29 01:38:10 -07:00 committed by Android Git Automerger
commit 5e4c4b009b
1 changed files with 31 additions and 3 deletions

View File

@ -48,9 +48,9 @@ public class Suggest implements Dictionary.WordCallback {
private int mPrefMaxSuggestions = 12; private int mPrefMaxSuggestions = 12;
private int[] mPriorities = new int[mPrefMaxSuggestions]; private int[] mPriorities = new int[mPrefMaxSuggestions];
private List<CharSequence> mSuggestions = new ArrayList<CharSequence>(); private ArrayList<CharSequence> mSuggestions = new ArrayList<CharSequence>();
private boolean mIncludeTypedWordIfValid; private boolean mIncludeTypedWordIfValid;
private List<CharSequence> mStringPool = new ArrayList<CharSequence>(); private ArrayList<CharSequence> mStringPool = new ArrayList<CharSequence>();
private Context mContext; private Context mContext;
private boolean mHaveCorrection; private boolean mHaveCorrection;
private CharSequence mOriginalWord; private CharSequence mOriginalWord;
@ -219,9 +219,37 @@ public class Suggest implements Dictionary.WordCallback {
i++; i++;
} }
removeDupes();
return mSuggestions; return mSuggestions;
} }
private void removeDupes() {
final ArrayList<CharSequence> suggestions = mSuggestions;
if (suggestions.size() < 2) return;
int i = 1;
// Don't cache suggestions.size(), since we may be removing items
while (i < suggestions.size()) {
final CharSequence cur = suggestions.get(i);
// Compare each candidate with each previous candidate
for (int j = 0; j < i; j++) {
CharSequence previous = suggestions.get(j);
if (TextUtils.equals(cur, previous)) {
removeFromSuggestions(i);
i--;
break;
}
}
i++;
}
}
private void removeFromSuggestions(int index) {
CharSequence garbage = mSuggestions.remove(index);
if (garbage != null && garbage instanceof StringBuilder) {
mStringPool.add(garbage);
}
}
public boolean hasMinimalCorrection() { public boolean hasMinimalCorrection() {
return mHaveCorrection; return mHaveCorrection;
} }