fix: ScriptListView not update when file created or deleted
This commit is contained in:
@@ -9,8 +9,8 @@ android {
|
|||||||
applicationId "com.stardust.scriptdroid"
|
applicationId "com.stardust.scriptdroid"
|
||||||
minSdkVersion 17
|
minSdkVersion 17
|
||||||
targetSdkVersion 23
|
targetSdkVersion 23
|
||||||
versionCode 202
|
versionCode 203
|
||||||
versionName "3.0.0 Alpha3"
|
versionName "3.0.0 Alpha4"
|
||||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||||
multiDexEnabled true
|
multiDexEnabled true
|
||||||
ndk {
|
ndk {
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ import com.stardust.scriptdroid.ui.common.ScriptLoopDialog;
|
|||||||
import com.stardust.scriptdroid.ui.common.ScriptOperations;
|
import com.stardust.scriptdroid.ui.common.ScriptOperations;
|
||||||
import com.stardust.widget.BindableViewHolder;
|
import com.stardust.widget.BindableViewHolder;
|
||||||
|
|
||||||
|
import org.greenrobot.eventbus.Subscribe;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
@@ -51,6 +53,7 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa
|
|||||||
private ScriptFile mCurrentDirectory;
|
private ScriptFile mCurrentDirectory;
|
||||||
private OnScriptFileClickListener mOnScriptFileClickListener;
|
private OnScriptFileClickListener mOnScriptFileClickListener;
|
||||||
private ScriptFile mSelectedScriptFile;
|
private ScriptFile mSelectedScriptFile;
|
||||||
|
private StorageFileProvider mStorageFileProvider;
|
||||||
|
|
||||||
public ScriptListView(Context context) {
|
public ScriptListView(Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
@@ -80,7 +83,9 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa
|
|||||||
mScriptListView = new RecyclerView(getContext());
|
mScriptListView = new RecyclerView(getContext());
|
||||||
addView(mScriptListView);
|
addView(mScriptListView);
|
||||||
initScriptListRecyclerView();
|
initScriptListRecyclerView();
|
||||||
setCurrentDirectory(StorageFileProvider.getDefault().getInitialDirectory());
|
mStorageFileProvider = StorageFileProvider.getDefault();
|
||||||
|
setCurrentDirectory(mStorageFileProvider.getInitialDirectory());
|
||||||
|
mStorageFileProvider.registerDirectoryChangeListener(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initScriptListRecyclerView() {
|
private void initScriptListRecyclerView() {
|
||||||
@@ -104,7 +109,7 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa
|
|||||||
private void loadScriptList() {
|
private void loadScriptList() {
|
||||||
mScriptFiles.clear();
|
mScriptFiles.clear();
|
||||||
mDirectories.clear();
|
mDirectories.clear();
|
||||||
StorageFileProvider.getDefault().getDirectoryScriptFiles(mCurrentDirectory)
|
mStorageFileProvider.getDirectoryScriptFiles(mCurrentDirectory)
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe(new SimpleObserver<ScriptFile>() {
|
.subscribe(new SimpleObserver<ScriptFile>() {
|
||||||
@@ -126,6 +131,13 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
void onDirectoryChange(StorageFileProvider.DirectoryChangeEvent event) {
|
||||||
|
if (event.directory.equals(mCurrentDirectory)) {
|
||||||
|
loadScriptList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRefresh() {
|
public void onRefresh() {
|
||||||
loadScriptList();
|
loadScriptList();
|
||||||
@@ -160,6 +172,12 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDetachedFromWindow() {
|
||||||
|
super.onDetachedFromWindow();
|
||||||
|
mStorageFileProvider.unregisterDirectoryChangeListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
private class ScriptListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
private class ScriptListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||||
|
|
||||||
private final int VIEW_TYPE_FILE = 0;
|
private final int VIEW_TYPE_FILE = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user