@@ -153,36 +153,33 @@ private void recreateViews() {
153153 mViewGroup .removeAllViews ();
154154 return ;
155155 }
156- for (int i = 0 ; i < mAdapter .getItemCount () || i < mViewGroup .getChildCount (); i ++) {
157-
158- //Within the bounds of the dataset
159- if (i < mAdapter .getItemCount ()) {
160- int viewType = mAdapter .getItemViewType (i );
161- //This means the view could already exist
162- if (i < mViewGroup .getChildCount ()) {
163- View child = mViewGroup .getChildAt (i );
164- Integer savedViewType = (Integer ) child .getTag (R .id .adapter_layout_list_view_type );
165- RecyclerView .ViewHolder savedViewHolder = (RecyclerView .ViewHolder ) child .getTag (R .id .adapter_layout_list_holder );
166-
167- if (savedViewType != null && savedViewType == viewType && savedViewHolder != null ) {
168- //perfect, it exists and is the right type, so just bind it
169- mAdapter .onBindViewHolder (savedViewHolder , i );
170- } else {
171- //it already existed, but something was wrong. So remove it and recreate it
172- addViewAt (viewType , i );
173- mViewGroup .removeView (child );
174- }
175- } else {
176- //Creating a brand new view
177- addViewAt (viewType , i );
178- }
156+ int i ;
157+ for (i = 0 ; i < mAdapter .getItemCount (); i ++) {
158+
159+ int viewType = mAdapter .getItemViewType (i );
160+ //This means the view could already exist
161+ if (i < mViewGroup .getChildCount ()) {
162+ View child = mViewGroup .getChildAt (i );
163+ Integer savedViewType = (Integer ) child .getTag (R .id .adapter_layout_list_view_type );
164+ RecyclerView .ViewHolder savedViewHolder = (RecyclerView .ViewHolder ) child .getTag (R .id .adapter_layout_list_holder );
165+
166+ if (savedViewType != null && savedViewType == viewType && savedViewHolder != null ) {
167+ //perfect, it exists and is the right type, so just bind it
168+ mAdapter .onBindViewHolder (savedViewHolder , i );
179169 } else {
180- //Outside the bounds of the dataset, so remove it
181- if (i < mViewGroup .getChildCount ()) {
182- View child = mViewGroup .getChildAt (i );
183- mViewGroup .removeView (child );
184- }
170+ //it already existed, but something was wrong. So remove it and recreate it
171+ addViewAt (viewType , i );
172+ mViewGroup .removeView (child );
185173 }
174+ } else {
175+ //Creating a brand new view
176+ addViewAt (viewType , i );
177+ }
178+ }
179+
180+ //Outside the bounds of the dataset, so remove it
181+ if (i < mViewGroup .getChildCount ()) {
182+ mViewGroup .removeViews (i , mViewGroup .getChildCount () - i );
186183 }
187184 }
188185}
0 commit comments