fix: ScriptListView not update when file created or deleted

This commit is contained in:
hyb1996
2017-09-26 23:46:59 +08:00
parent 7616634e40
commit 18e7fceac6
2 changed files with 22 additions and 4 deletions

View File

@@ -25,6 +25,8 @@ import com.stardust.scriptdroid.ui.common.ScriptLoopDialog;
import com.stardust.scriptdroid.ui.common.ScriptOperations;
import com.stardust.widget.BindableViewHolder;
import org.greenrobot.eventbus.Subscribe;
import java.util.ArrayList;
import butterknife.BindView;
@@ -51,6 +53,7 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa
private ScriptFile mCurrentDirectory;
private OnScriptFileClickListener mOnScriptFileClickListener;
private ScriptFile mSelectedScriptFile;
private StorageFileProvider mStorageFileProvider;
public ScriptListView(Context context) {
super(context);
@@ -80,7 +83,9 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa
mScriptListView = new RecyclerView(getContext());
addView(mScriptListView);
initScriptListRecyclerView();
setCurrentDirectory(StorageFileProvider.getDefault().getInitialDirectory());
mStorageFileProvider = StorageFileProvider.getDefault();
setCurrentDirectory(mStorageFileProvider.getInitialDirectory());
mStorageFileProvider.registerDirectoryChangeListener(this);
}
private void initScriptListRecyclerView() {
@@ -104,7 +109,7 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa
private void loadScriptList() {
mScriptFiles.clear();
mDirectories.clear();
StorageFileProvider.getDefault().getDirectoryScriptFiles(mCurrentDirectory)
mStorageFileProvider.getDirectoryScriptFiles(mCurrentDirectory)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.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
public void onRefresh() {
loadScriptList();
@@ -160,6 +172,12 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa
return true;
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
mStorageFileProvider.unregisterDirectoryChangeListener(this);
}
private class ScriptListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final int VIEW_TYPE_FILE = 0;