1515 * Tweaked from source at http://stackoverflow.com/questions/4044509/android-how-to-use-the-html-taghandler
1616 */
1717public class WPHtmlTagHandler implements Html .TagHandler {
18+
19+ private static final int SPAN_INDENT_WIDTH = 15 ;
20+
1821 private int mListItemCount = 0 ;
1922 private List <String > mListParents = new ArrayList <>();
2023
2124 @ Override
2225 public void handleTag (final boolean opening , final String tag , Editable output ,
2326 final XMLReader xmlReader ) {
24- if (tag .equals ("ul" ) || tag .equals ("ol" ) || tag .equals ("dd" )) {
25- if (opening ) {
26- mListParents .add (tag );
27- } else {
28- mListParents .remove (tag );
27+ if (tag != null ) {
28+ if (tag .equals ("ul" ) || tag .equals ("ol" ) || tag .equals ("dd" )) {
29+ if (opening ) {
30+ mListParents .add (tag );
31+ } else {
32+ mListParents .remove (tag );
33+ }
34+ mListItemCount = 0 ;
35+ } else if (tag .equals ("li" ) && !opening ) {
36+ handleListTag (output );
2937 }
30- mListItemCount = 0 ;
31- } else if (tag .equals ("li" ) && !opening ) {
32- handleListTag (output );
3338 }
3439 }
3540
3641 private void handleListTag (Editable output ) {
3742 int size = mListParents .size ();
38- if (size > 0 ) {
39- if (mListParents .get (size - 1 ). equals ( "ul" )) {
43+ if (size > 0 && output != null ) {
44+ if ("ul" . equals ( mListParents .get (size - 1 ))) {
4045 output .append ("\n " );
4146 String [] split = output .toString ().split ("\n " );
4247 int start = 0 ;
4348 if (split .length != 1 ) {
4449 int lastIndex = split .length - 1 ;
4550 start = output .length () - split [lastIndex ].length () - 1 ;
4651 }
47- output .setSpan (new BulletSpan (15 * mListParents .size ()), start , output .length (), 0 );
48- } else if (mListParents .get (size - 1 ). equals ( "ol" )) {
52+ output .setSpan (new BulletSpan (SPAN_INDENT_WIDTH * mListParents .size ()), start , output .length (), 0 );
53+ } else if ("ol" . equals ( mListParents .get (size - 1 ))) {
4954 mListItemCount ++;
5055 output .append ("\n " );
5156 String [] split = output .toString ().split ("\n " );
@@ -55,7 +60,7 @@ private void handleListTag(Editable output) {
5560 start = output .length () - split [lastIndex ].length () - 1 ;
5661 }
5762 output .insert (start , mListItemCount + ". " );
58- output .setSpan (new LeadingMarginSpan .Standard (15 * mListParents .size ()), start ,
63+ output .setSpan (new LeadingMarginSpan .Standard (SPAN_INDENT_WIDTH * mListParents .size ()), start ,
5964 output .length (), 0 );
6065 }
6166 }
0 commit comments