@@ -47,7 +47,15 @@ public FileListAdapter(List<String> nextFileListData, List<DisplayTypes.FileType
4747 this .fileListData .addAll (nextFileListData );
4848 this .fileItemsData = new ArrayList <DisplayTypes .FileType >();
4949 this .fileItemsData .addAll (nextFileItemsData );
50- //this.setHasStableIds(true);
50+ this .setHasStableIds (false ); // TODO ???
51+ notifyDataSetChanged ();
52+ }
53+
54+ public void reloadDataSets (List <String > nextDataSet , List <DisplayTypes .FileType > nextFileItemsData ) {
55+ fileListData .clear ();
56+ fileListData .addAll (nextDataSet );
57+ fileItemsData .clear ();
58+ fileItemsData .addAll (nextFileItemsData );
5159 notifyDataSetChanged ();
5260 }
5361
@@ -65,7 +73,7 @@ public void onBindViewHolder(BaseViewHolder bvHolder, int posIndex) {
6573 //Log.i(LOGTAG, String.format(Locale.getDefault(), "onBindViewHolder @ %d -- %s", posIndex, bvHolder.getDisplayText().getText()));
6674 if (!fileItemsData .isEmpty ()) {
6775 DisplayTypes .FileType fileItem = fileItemsData .get (posIndex );
68- bvHolder .setFileItemData ( fileItem );
76+ fileItem . setLayoutContainer ( bvHolder .getMainViewLayoutContainer () );
6977 View viewItemContainer = bvHolder .getMainViewLayoutContainer ();
7078 DisplayFragments .FileListItemFragment .resetLayout (viewItemContainer , fileItem , posIndex );
7179 }
@@ -96,9 +104,7 @@ public int getItemCount() {
96104 public static class BaseViewHolder extends RecyclerView .ViewHolder implements View .OnClickListener , View .OnLongClickListener , RecyclerView .OnItemTouchListener {
97105
98106 private View fileItemContainerView ;
99- public View iconView ;
100107 public TextView displayText ;
101- public DisplayTypes .FileType fileItem ;
102108
103109 private GestureDetector gestureDetector = new GestureDetector (FileChooserActivity .getInstance (), new GestureDetector .SimpleOnGestureListener () {
104110 @ Override
@@ -121,62 +127,56 @@ public BaseViewHolder(View v) {
121127 fileItemContainerView = v ;
122128 v .setOnClickListener (this );
123129 v .setOnLongClickListener (this );
124- //iconView = v.findViewById(R.id.fileTypeIcon);
125130 displayText = (TextView ) v .findViewById (R .id .fileEntryBaseName );
126131 }
127132
128- public void setFileItemData (DisplayTypes .FileType storedFileItem ) {
129- fileItem = storedFileItem ;
130- }
131-
132- public DisplayTypes .FileType getFileItemReference () {
133- return fileItem ;
134- }
135-
136133 public TextView getDisplayText () { return displayText ; }
137134
138135 public View getMainViewLayoutContainer () { return fileItemContainerView ; }
139136
140137 public boolean performNewFileItemClick (DisplayTypes .FileType fileItem ) {
141- if (fileItem .getLayoutContainer () != null ) {
138+ if (fileItem != null && fileItem .getLayoutContainer () != null ) {
142139 return performNewFileItemClick (fileItem .getLayoutContainer ().findViewById (R .id .fileSelectCheckBox ), fileItem );
143140 }
144141 return false ;
145142 }
146143
147144 public static boolean performNewFileItemClick (CheckBox cbView , DisplayTypes .FileType fileItem ) {
148- if (fileItem == null ) {
145+ if (cbView == null || fileItem == null ) {
149146 return false ;
150147 }
151148 boolean isDir = fileItem .isDirectory ();
152149 if (!isDir && !DisplayFragments .getInstance ().allowSelectFiles ) {
153150 Log .i (LOGTAG , "Blocking file item selection I" );
151+ cbView .setChecked (false );
154152 return false ;
155153 }
156154 else if (isDir && !DisplayFragments .getInstance ().allowSelectFolders ) {
157155 Log .i (LOGTAG , "Blocking file item selection II" );
156+ cbView .setChecked (false );
158157 return false ;
159158 }
160- CheckBox selectionMarker = cbView ;
161159 if (!cbView .isEnabled ()) {
160+ cbView .setChecked (false );
162161 return false ;
163162 }
164163 if (fileItem .isChecked ()) {
165164 // Deselect: uncheck GUI widget item and remove the fileItem from the active selections list:
166165 fileItem .setChecked (false );
167- selectionMarker .setChecked (false );
168- selectionMarker .setEnabled (true );
166+ cbView .setChecked (false );
167+ cbView .setEnabled (true );
169168 DisplayFragments .getInstance ().activeSelectionsList .remove (fileItem );
170169 DisplayFragments .getInstance ().curSelectionCount --;
171170 Log .i (LOGTAG , "DE-Selected next checkbox (file item)" );
172171 return true ;
173172 }
174173 else if (DisplayFragments .getInstance ().curSelectionCount >= DisplayFragments .getInstance ().maxAllowedSelections ) {
174+ cbView .setChecked (false );
175175 return false ;
176176 }
177177 fileItem .setChecked (true );
178- selectionMarker .setChecked (true );
179- selectionMarker .setEnabled (true );
178+ cbView .setChecked (true );
179+ cbView .setEnabled (true );
180180 DisplayFragments .getInstance ().activeSelectionsList .add (fileItem );
181181 DisplayFragments .getInstance ().curSelectionCount ++;
182182 Log .i (LOGTAG , "Selected next checkbox (file item)" );
@@ -186,6 +186,11 @@ else if(DisplayFragments.getInstance().curSelectionCount >= DisplayFragments.get
186186 @ Override
187187 public void onClick (View v ) {
188188 Log .i (LOGTAG , "onClick" );
189+ int fileItemPosIndex = DisplayFragments .getInstance ().findFileItemIndexByLayout (v );
190+ if (fileItemPosIndex < 0 ) {
191+ return ;
192+ }
193+ DisplayTypes .FileType fileItem = DisplayFragments .getInstance ().activeFileItemsDataList .get (fileItemPosIndex );
189194 if (fileItem != null && (!fileItem .isDirectory () || DisplayFragments .getInstance ().allowSelectFolders )) {
190195 if (performNewFileItemClick (fileItem )) {
191196 String filePathType = fileItem .isDirectory () ? "DIR" : "FILE" ;
@@ -198,7 +203,12 @@ public void onClick(View v) {
198203 @ Override
199204 public boolean onLongClick (View v ) {
200205 Log .i (LOGTAG , "onLongClick" );
201- if (fileItem != null && !fileItem .isDirectory ()) {
206+ int fileItemPosIndex = DisplayFragments .getInstance ().findFileItemIndexByLayout (v );
207+ if (fileItemPosIndex < 0 ) {
208+ return false ;
209+ }
210+ DisplayTypes .FileType fileItem = DisplayFragments .getInstance ().activeFileItemsDataList .get (fileItemPosIndex );
211+ if (fileItem == null || !fileItem .isDirectory ()) {
202212 if (performNewFileItemClick (fileItem )) {
203213 String displaySelectMsg = String .format (Locale .getDefault (), "Selected FILE \" %s\" ." , fileItem .getBaseName ());
204214 DisplayUtils .displayToastMessageShort (displaySelectMsg );
@@ -214,7 +224,6 @@ public boolean onLongClick(View v) {
214224 }
215225 DisplayTypes .DirectoryResultContext workingFolder = DisplayFragments .getInstance ().pathHistoryStack .peek ();
216226 DisplayFragments .getInstance ().pathHistoryStack .push (nextFolder );
217- int fileItemPosIndex = DisplayFragments .getInstance ().activeFileItemsDataList .lastIndexOf (fileItem );
218227 if (workingFolder == null ) {
219228 nextFolder .loadNextFolderAtIndex (fileItemPosIndex , true );
220229 DisplayFragments .getInstance ().descendIntoNextDirectory (true );
0 commit comments