Skip to content

Commit c38eae7

Browse files
committed
Backup point -- Scrolling to correct position when the RecyclerView first loads
1 parent bef0f10 commit c38eae7

12 files changed

Lines changed: 298 additions & 413 deletions

File tree

.gitignore

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
*.iml
2+
.gradle
3+
/local.properties
4+
/.idea/caches
5+
/.idea/libraries
6+
/.idea/modules.xml
7+
/.idea/workspace.xml
8+
/.idea/navEditor.xml
9+
/.idea/assetWizardSettings.xml
10+
.DS_Store
11+
/build
12+
/captures
13+
.externalNativeBuild
14+
.cxx

AndroidFilePickerLightLibrary/src/main/java/com/maxieds/androidfilepickerlightlibrary/BasicFileProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -540,7 +540,7 @@ private File getFileForDocId(String docId) throws FileNotFoundException {
540540
} else {
541541
final String path = docId.substring(splitIndex + 1);
542542
target = new File(target, path);
543-
Log.i(LOGTAG, "DOCID effective path -> " + target.getAbsolutePath());
543+
//Log.i(LOGTAG, "DOCID effective path -> " + target.getAbsolutePath());
544544
if (!target.exists()) {
545545
throw new FileNotFoundException("Missing file for " + docId + " at " + target);
546546
}

AndroidFilePickerLightLibrary/src/main/java/com/maxieds/androidfilepickerlightlibrary/DisplayAdapters.java

Lines changed: 67 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ This program (the AndroidFilePickerLight library) is free software written by
2424
import android.view.View;
2525
import android.view.ViewGroup;
2626
import android.widget.CheckBox;
27+
import android.widget.CompoundButton;
2728
import android.widget.TextView;
2829

2930
import 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

Comments
 (0)