2424
2525import java .util .AbstractList ;
2626import java .util .ArrayList ;
27+ import java .util .Iterator ;
2728import java .util .List ;
2829
2930public abstract class StringArray <T extends StringItem > extends OffsetBlockArray <T > implements JSONConvert <JSONArray > {
@@ -51,7 +52,7 @@ protected void onPostShift(int index){
5152 @ Override
5253 protected void onPreRefreshRefresh (){
5354 if (isFlexible ()){
54- trimAllocatedFreeSpace ();
55+ trimNullBlocks ();
5556 }
5657 super .onPreRefreshRefresh ();
5758 }
@@ -85,8 +86,10 @@ List<T> listUnusedStringsToRemove(){
8586 }
8687 public List <T > listUnusedStrings (){
8788 List <T > results =new ArrayList <>();
88- for (T item :listItems ()){
89- if (!item .hasReference ()){
89+ T [] childes = getChildes ();
90+ for (int i = 0 ; i < childes .length ; i ++){
91+ T item = childes [i ];
92+ if (item != null && !item .hasReference ()){
9093 results .add (item );
9194 }
9295 }
@@ -96,12 +99,15 @@ public void setUtf8(boolean is_utf8){
9699 if (mUtf8 ==is_utf8 ){
97100 return ;
98101 }
99- mUtf8 = is_utf8 ;
100- T [] childes = getChildes ();
102+ mUtf8 = is_utf8 ;
103+ T [] childes = getChildes ();
101104 if (childes !=null ){
102- int max =childes .length ;
103- for (int i =0 ;i <max ;i ++){
104- childes [i ].setUtf8 (is_utf8 );
105+ int length = childes .length ;
106+ for (int i =0 ; i <length ; i ++){
107+ T item = childes [i ];
108+ if (item != null ){
109+ item .setUtf8 (is_utf8 );
110+ }
105111 }
106112 }
107113 }
@@ -124,10 +130,9 @@ public JSONArray toJson(boolean styledOnly) {
124130 }
125131 JSONArray jsonArray =new JSONArray ();
126132 int i =0 ;
127- for (T item :listItems ()){
128- if (item .isNull ()){
129- continue ;
130- }
133+ Iterator <T > itr = iterator (true );
134+ while (itr .hasNext ()){
135+ T item = itr .next ();
131136 if (styledOnly && !item .hasStyle ()){
132137 continue ;
133138 }
0 commit comments