@@ -24,6 +24,7 @@ This program (the AndroidFilePickerLight library) is free software written by
2424import android .view .View ;
2525import android .view .ViewGroup ;
2626import android .widget .CheckBox ;
27+ import android .widget .CompoundButton ;
2728import android .widget .TextView ;
2829
2930import androidx .recyclerview .widget .RecyclerView ;
@@ -67,15 +68,15 @@ public void reloadDataSets(List<String> nextDataSet, List<DisplayTypes.FileType>
6768
6869 @ Override
6970 public BaseViewHolder onCreateViewHolder (ViewGroup parent , int viewType ) {
70- Log .i (LOGTAG ,"onCreateViewHolder" );
71+ // Log.i(LOGTAG,"onCreateViewHolder");
7172 View rowItem = LayoutInflater .from (parent .getContext ()).inflate (R .layout .single_file_entry_item , parent , false );
7273 return new BaseViewHolder (rowItem );
7374 }
7475
7576 @ Override
7677 public void onBindViewHolder (BaseViewHolder bvHolder , int posIndex ) {
7778 bvHolder .getDisplayText ().setText (fileListData .get (posIndex ));
78- Log .i (LOGTAG , String .format (Locale .getDefault (), "onBindViewHolder @ %d -- %s" , posIndex , bvHolder .getDisplayText ().getText ()));
79+ // Log.i(LOGTAG, String.format(Locale.getDefault(), "onBindViewHolder @ %d -- %s", posIndex, bvHolder.getDisplayText().getText()));
7980 if (!fileItemsData .isEmpty ()) {
8081 DisplayTypes .FileType fileItem = fileItemsData .get (posIndex );
8182 fileItem .setLayoutContainer (bvHolder .getMainViewLayoutContainer ());
@@ -86,17 +87,17 @@ public void onBindViewHolder(BaseViewHolder bvHolder, int posIndex) {
8687
8788 @ Override
8889 public void onViewRecycled (BaseViewHolder bvHolder ) {
89- Log .i (LOGTAG ,"onViewRecycled: " + bvHolder );
90+ // Log.i(LOGTAG,"onViewRecycled: " + bvHolder);
9091 }
9192
9293 @ Override
9394 public void onViewDetachedFromWindow (BaseViewHolder bvHolder ) {
94- Log .i (LOGTAG ,"onViewDetachedFromWindow: " + bvHolder );
95+ // Log.i(LOGTAG,"onViewDetachedFromWindow: " + bvHolder);
9596 }
9697
9798 @ Override
9899 public void onViewAttachedToWindow (BaseViewHolder bvHolder ) {
99- Log .i (LOGTAG ,"onViewAttachedToWindow: " + bvHolder );
100+ // Log.i(LOGTAG,"onViewAttachedToWindow: " + bvHolder);
100101 }
101102
102103 @ Override
@@ -164,13 +165,64 @@ public BaseViewHolder(View v) {
164165
165166 public View getMainViewLayoutContainer () { return fileItemContainerView ; }
166167
167- public boolean performNewFileItemClick (DisplayTypes .FileType fileItem ) {
168- if (fileItem != null && fileItem .getLayoutContainer () != null ) {
169- return performNewFileItemClick (fileItem .getLayoutContainer ().findViewById (R .id .fileSelectCheckBox ), fileItem );
168+ @ Override
169+ public void onClick (View v ) {
170+ Log .i (LOGTAG , "BaseViewHolder::onClick [RETURNING, DOING NOTHING] ... " );
171+ }
172+
173+ @ Override
174+ public boolean onLongClick (View v ) {
175+ Log .i (LOGTAG , "BaseViewHolder::onLongClick" );
176+ int fileItemPosIndex = DisplayFragments .RecyclerViewUtils .findFileItemIndexByLayout (v );
177+ if (fileItemPosIndex < 0 ) {
178+ return false ;
179+ }
180+ DisplayTypes .FileType fileItem = DisplayFragments .getInstance ().activeFileItemsDataList .get (fileItemPosIndex );
181+ if (fileItem != null && fileItem .isDirectory ()) {
182+ // Recursively descend into the clicked directory location:
183+ DisplayTypes .DirectoryResultContext nextFolder = fileItem .getParentFolderContext ();
184+ if (nextFolder == null ) {
185+ return false ;
186+ }
187+ DisplayTypes .DirectoryResultContext workingFolder = DisplayFragments .getInstance ().pathHistoryStack .peek ();
188+ DisplayFragments .getInstance ().pathHistoryStack .push (nextFolder );
189+ if (workingFolder == null ) {
190+ nextFolder .loadNextFolderAtIndex (fileItemPosIndex , true );
191+ DisplayFragments .getInstance ().descendIntoNextDirectory (true );
192+ }
193+ else {
194+ nextFolder .loadNextFolderAtIndex (fileItemPosIndex , false );
195+ DisplayFragments .getInstance ().descendIntoNextDirectory (false );
196+ }
197+ String displayRecurseMsg = String .format (Locale .getDefault (), "Descending recursively into DIR \" %s\" ." , fileItem .getBaseName ());
198+ DisplayUtils .displayToastMessageShort (displayRecurseMsg );
199+ return true ;
170200 }
171201 return false ;
172202 }
173203
204+ @ Override
205+ public boolean onInterceptTouchEvent (RecyclerView rview , MotionEvent mevt ) {
206+ View childView = rview .findChildViewUnder (mevt .getX (), mevt .getY ());
207+ if (childView != null && gestureDetector .onTouchEvent (mevt )) {
208+ ////clickListener.onClick(child, rview.getChildPosition(child));
209+ onClick (childView );
210+ }
211+ return false ;
212+ }
213+
214+ @ Override
215+ public void onTouchEvent (RecyclerView rview , MotionEvent mevt ) {}
216+
217+ @ Override
218+ public void onRequestDisallowInterceptTouchEvent (boolean state ) {}
219+
220+ }
221+
222+ public static class OnSelectListener implements CompoundButton .OnCheckedChangeListener {
223+
224+ private static String LOGTAG = OnSelectListener .class .getSimpleName ();
225+
174226 public static boolean performNewFileItemClick (CheckBox cbView , DisplayTypes .FileType fileItem ) {
175227 Log .i (LOGTAG , String .format (Locale .getDefault (), "INIT PERFORM CLICK: (selected, max allowed) = (%d, %d)" ,
176228 DisplayFragments .getInstance ().curSelectionCount , DisplayFragments .getInstance ().maxAllowedSelections ));
@@ -179,12 +231,12 @@ public static boolean performNewFileItemClick(CheckBox cbView, DisplayTypes.File
179231 }
180232 boolean isDir = fileItem .isDirectory ();
181233 if (!isDir && !DisplayFragments .getInstance ().allowSelectFiles ) {
182- Log .i (LOGTAG , "Blocking file item selection I" );
234+ Log .i (LOGTAG , "Blocking FILE item selection I" );
183235 cbView .setChecked (false );
184236 return false ;
185237 }
186238 else if (isDir && !DisplayFragments .getInstance ().allowSelectFolders ) {
187- Log .i (LOGTAG , "Blocking file item selection II" );
239+ Log .i (LOGTAG , "Blocking DIR item selection II" );
188240 cbView .setChecked (false );
189241 return false ;
190242 }
@@ -220,77 +272,19 @@ else if(DisplayFragments.getInstance().curSelectionCount >= DisplayFragments.get
220272 }
221273
222274 @ Override
223- public void onClick ( View v ) {
224- Log . i ( LOGTAG , "BaseViewHolder::onClick" ) ;
225- int fileItemPosIndex = DisplayFragments .RecyclerViewUtils .findFileItemIndexByLayout (v );
275+ public void onCheckedChanged ( CompoundButton btnView , boolean isChecked ) {
276+ CheckBox cbView = ( CheckBox ) btnView ;
277+ int fileItemPosIndex = DisplayFragments .RecyclerViewUtils .findFileItemIndexByLayout (( View ) btnView . getParent () );
226278 if (fileItemPosIndex < 0 ) {
279+ Log .i (LOGTAG , "onCheckedChanged: Unable to find parent view index ..." );
227280 return ;
228281 }
229282 DisplayTypes .FileType fileItem = DisplayFragments .getInstance ().activeFileItemsDataList .get (fileItemPosIndex );
230- if (fileItem != null && (!fileItem .isDirectory () || DisplayFragments .getInstance ().allowSelectFolders )) {
231- if (performNewFileItemClick (fileItem )) {
232- String filePathType = fileItem .isDirectory () ? "DIR" : "FILE" ;
233- String displaySelectMsg = String .format (Locale .getDefault (), "Selected %s \" %s\" ." , filePathType , fileItem .getBaseName ());
234- DisplayUtils .displayToastMessageShort (displaySelectMsg );
235- }
236- }
237- }
238-
239- @ Override
240- public boolean onLongClick (View v ) {
241- Log .i (LOGTAG , "BaseViewHolder::onLongClick" );
242- int fileItemPosIndex = DisplayFragments .RecyclerViewUtils .findFileItemIndexByLayout (v );
243- if (fileItemPosIndex < 0 ) {
244- return false ;
245- }
246- DisplayTypes .FileType fileItem = DisplayFragments .getInstance ().activeFileItemsDataList .get (fileItemPosIndex );
247- if (fileItem == null || !fileItem .isDirectory ()) {
248- if (performNewFileItemClick (fileItem )) {
249- String displaySelectMsg = String .format (Locale .getDefault (), "Selected FILE \" %s\" ." , fileItem .getBaseName ());
250- DisplayUtils .displayToastMessageShort (displaySelectMsg );
251- return true ;
252- }
253- return false ;
254- }
255- // Otherwise, descend recursively into the clicked directory location:
256283 if (fileItem != null ) {
257- DisplayTypes .DirectoryResultContext nextFolder = fileItem .getParentFolderContext ();
258- if (nextFolder == null ) {
259- return false ;
260- }
261- DisplayTypes .DirectoryResultContext workingFolder = DisplayFragments .getInstance ().pathHistoryStack .peek ();
262- DisplayFragments .getInstance ().pathHistoryStack .push (nextFolder );
263- if (workingFolder == null ) {
264- nextFolder .loadNextFolderAtIndex (fileItemPosIndex , true );
265- DisplayFragments .getInstance ().descendIntoNextDirectory (true );
266- }
267- else {
268- nextFolder .loadNextFolderAtIndex (fileItemPosIndex , false );
269- DisplayFragments .getInstance ().descendIntoNextDirectory (false );
270- }
271- String displayRecurseMsg = String .format (Locale .getDefault (), "Descending recursively into DIR \" %s\" ." , fileItem .getBaseName ());
272- DisplayUtils .displayToastMessageShort (displayRecurseMsg );
273- return true ;
284+ performNewFileItemClick (cbView , fileItem );
274285 }
275- return false ;
276286 }
277287
278- @ Override
279- public boolean onInterceptTouchEvent (RecyclerView rview , MotionEvent mevt ) {
280- View childView = rview .findChildViewUnder (mevt .getX (), mevt .getY ());
281- if (childView != null && gestureDetector .onTouchEvent (mevt )) {
282- ////clickListener.onClick(child, rview.getChildPosition(child));
283- onClick (childView );
284- }
285- return false ;
286- }
287-
288- @ Override
289- public void onTouchEvent (RecyclerView rview , MotionEvent mevt ) {}
290-
291- @ Override
292- public void onRequestDisallowInterceptTouchEvent (boolean state ) {}
293-
294288 }
295289
296290}
0 commit comments