diff options
author | 2009-10-29 01:29:00 -0700 | |
---|---|---|
committer | 2009-10-29 01:29:00 -0700 | |
commit | 709d1c61daac6ed74e14d268d4e786881ac9eb57 (patch) | |
tree | 320e8f2a72fdc7c02a7df20a1d7a463eff3e926f /src | |
parent | 7d92b6ffc513ba447683b127d3495b97d4a714f9 (diff) | |
parent | bf0f4d9c8b789035255d6b89752c77801929002e (diff) | |
download | latinime-709d1c61daac6ed74e14d268d4e786881ac9eb57.tar.gz latinime-709d1c61daac6ed74e14d268d4e786881ac9eb57.tar.xz latinime-709d1c61daac6ed74e14d268d4e786881ac9eb57.zip |
am bf0f4d9c: Remove dupes from suggestions. Fixes 2213629
Merge commit 'bf0f4d9c8b789035255d6b89752c77801929002e' into eclair-mr2
* commit 'bf0f4d9c8b789035255d6b89752c77801929002e':
Remove dupes from suggestions. Fixes 2213629
Diffstat (limited to 'src')
-rwxr-xr-x | src/com/android/inputmethod/latin/Suggest.java | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/src/com/android/inputmethod/latin/Suggest.java b/src/com/android/inputmethod/latin/Suggest.java index bb6a153dc..c025566b7 100755 --- a/src/com/android/inputmethod/latin/Suggest.java +++ b/src/com/android/inputmethod/latin/Suggest.java @@ -48,9 +48,9 @@ public class Suggest implements Dictionary.WordCallback { private int mPrefMaxSuggestions = 12; private int[] mPriorities = new int[mPrefMaxSuggestions]; - private List<CharSequence> mSuggestions = new ArrayList<CharSequence>(); + private ArrayList<CharSequence> mSuggestions = new ArrayList<CharSequence>(); private boolean mIncludeTypedWordIfValid; - private List<CharSequence> mStringPool = new ArrayList<CharSequence>(); + private ArrayList<CharSequence> mStringPool = new ArrayList<CharSequence>(); private Context mContext; private boolean mHaveCorrection; private CharSequence mOriginalWord; @@ -218,10 +218,38 @@ public class Suggest implements Dictionary.WordCallback { } i++; } - + + removeDupes(); 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() { return mHaveCorrection; } |