]> gitweb.fperrin.net Git - Dictionary.git/blobdiff - src/com/hughes/android/dictionary/DictionaryActivity.java
Simplify adding a ClickableLink span.
[Dictionary.git] / src / com / hughes / android / dictionary / DictionaryActivity.java
index dbeb485cba5e8678b741d372edd7e46c473ede83..9bf6dbabe9e159102dbfbde3d618ace30e6358a1 100644 (file)
@@ -39,6 +39,7 @@ import android.support.v7.widget.Toolbar;
 import android.text.ClipboardManager;
 import android.text.InputType;
 import android.text.Spannable;
+import android.text.SpannableString;
 import android.text.method.LinkMovementMethod;
 import android.text.style.ClickableSpan;
 import android.text.style.StyleSpan;
@@ -229,6 +230,8 @@ public class DictionaryActivity extends ActionBarActivity {
     private void dictionaryOpenFail(Exception e) {
         Log.e(LOG, "Unable to load dictionary.", e);
         if (dictRaf != null) {
+            indexAdapter = null;
+            setListAdapter(null);
             try {
                 dictRaf.close();
             } catch (IOException e1) {
@@ -709,6 +712,9 @@ public class DictionaryActivity extends ActionBarActivity {
         textToSpeech.shutdown();
         textToSpeech = null;
 
+        indexAdapter = null;
+        setListAdapter(null);
+
         try {
             Log.d(LOG, "Closing RAF.");
             dictRaf.close();
@@ -1652,14 +1658,12 @@ public class DictionaryActivity extends ActionBarActivity {
                 final Pair pair = entry.pairs.get(r);
                 final String col1Text = index.swapPairEntries ? pair.lang2 : pair.lang1;
                 final String col2Text = index.swapPairEntries ? pair.lang1 : pair.lang2;
-
-                col1.setText(col1Text, TextView.BufferType.SPANNABLE);
-                col2.setText(col2Text, TextView.BufferType.SPANNABLE);
+                final Spannable col1Spannable = new SpannableString(col1Text);
+                final Spannable col2Spannable = new SpannableString(col2Text);
 
                 // Bold the token instances in col1.
                 final Set<String> toBold = toHighlight != null ? this.toHighlight : Collections
                                            .singleton(row.getTokenRow(true).getToken());
-                final Spannable col1Spannable = (Spannable) col1.getText();
                 for (final String token : toBold) {
                     int startPos = 0;
                     while ((startPos = col1Text.indexOf(token, startPos)) != -1) {
@@ -1670,7 +1674,10 @@ public class DictionaryActivity extends ActionBarActivity {
                 }
 
                 createTokenLinkSpans(col1, col1Spannable, col1Text);
-                createTokenLinkSpans(col2, (Spannable) col2.getText(), col2Text);
+                createTokenLinkSpans(col2, col2Spannable, col2Text);
+
+                col1.setText(col1Spannable);
+                col2.setText(col2Spannable);
             }
 
             result.setOnClickListener(new TextView.OnClickListener() {
@@ -1717,8 +1724,8 @@ public class DictionaryActivity extends ActionBarActivity {
                                            : theme.tokenRowOtherBg);
 
             // Make it so we can long-click on these token rows, too:
-            textView.setText(text, BufferType.SPANNABLE);
-            createTokenLinkSpans(textView, (Spannable) textView.getText(), text);
+            final Spannable textSpannable = new SpannableString(text);
+            createTokenLinkSpans(textView, textSpannable, text);
 
             if (!htmlEntries.isEmpty()) {
                 final ClickableSpan clickableSpan = new ClickableSpan() {
@@ -1726,7 +1733,7 @@ public class DictionaryActivity extends ActionBarActivity {
                     public void onClick(View widget) {
                     }
                 };
-                ((Spannable) textView.getText()).setSpan(clickableSpan, 0, text.length(),
+                textSpannable.setSpan(clickableSpan, 0, text.length(),
                         Spannable.SPAN_INCLUSIVE_INCLUSIVE);
                 textView.setOnClickListener(new OnClickListener() {
                     @Override
@@ -1735,6 +1742,7 @@ public class DictionaryActivity extends ActionBarActivity {
                     }
                 });
             }
+            textView.setText(textSpannable);
             return textView;
         }
 
@@ -1764,7 +1772,7 @@ public class DictionaryActivity extends ActionBarActivity {
         textView.setMovementMethod(LinkMovementMethod.getInstance());
         final Matcher matcher = CHAR_DASH.matcher(text);
         while (matcher.find()) {
-            spannable.setSpan(new NonLinkClickableSpan(textColorFg), matcher.start(),
+            spannable.setSpan(new NonLinkClickableSpan(), matcher.start(),
                               matcher.end(),
                               Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
         }